什么是内存数据网格(以下简称IMDG)?
数据在多个服务器之间共享,提供快速的响应时间,高吞吐量,高扩展性,信息可靠以及持续的稳定性,是内存数据网格的一些基本定义.
有什么用?
当你需要快速访问大型数据集合,并且又无法忍受从磁盘(譬如:数据库)中检索数据时.需要将数据保存在内存中,但是单一服务器内存大小可能不满足数据集合容量.
缺点:内存断电容易丢失,所有服务器断电容易造成数据丢失.
最适用于:Cache.
如何评价一个IMDG的实现?
- Shared across multiple servers, 数据非常容易被集群里所有的服务器共享,外界不需要知道数据存放在哪个节点.
- Low response times, 数据存储和读取, 响应时间要快.
- High throughput, 大吞吐量, 随着集群服务器数量的增加,自动负载均衡,分担读写压力.
- Scalability, 动态扩充和调整集群服务器的数量.
- Failover and Information reliability, 失效备援,当遇到网络或者硬件问题,不需要人工的干预,自动的切换到备份机器上,同时保证数据完整性.
几种常见的设计拓扑图.
1. 完全复制( Replicated Topology)
数据在集群内的每一个节点都有备份.update的结果会同步到整个集群中
优点:读操作的性能到极致
缺点:数据占用内存太大,随集群数量大小增长.
适用于:小集群对读要求特别高的系统.
2.部分复制(Partitioned Topology)
数据保存一个主数据源以及一到多个备份数据源
优点:高可扩展性,相比Replicated Topology内存使用得到很大的提升
适用于:需要读取大数据集的系统.
3.Near Topology
集群内有的服务器可能需要运行其他的一些应用程序,这些服务器上就不能存放数据.
现有的一些产品实现:
1. GigaSpaces XAP Elastic Caching Edition : http://www.gigaspaces.com/datagrid
2.Oracle Coherence : http://www.oracle.com/technetwork/middleware/coherence/index.html
3.HazleCast (OpenSource) : http://www.hazelcast.com/