Apache Geode/GemFire功能特性简介(1)

 

区域

 

复制区域

在区域中所有的数据被复制到每一个缓存服务器节点。复制区域使用了‘multiple masters’复制组织结构。当数据区域被复制(没有分区),对于每一个数据条目没有指定的管理者,来自任意成员的初始更新并发地传播到每一个节点。一旦成功处理了这个事件,ACK作为一个回应发送回初始成员。初始成员接到返回的ACK之后,做出相应地数据更新调用处理。

 

每一个缓存服务器节点都维护了一份数据的拷贝。所以复制区域模式适合于系统中有大量读操作,少量写操作的情况下。

 

分区区域

在区域中的数据跨服务器节点分布。一些服务器的节点管理分区的数据副本用来做备份。分区区域使用’single master’复制模式。

所以当读很重,数据集很小的时候,不适合分区区域模式。

如果你的数据量单机能够承受,那么你不需要在两个节点间分割数据。在这样的情况下,复制区域能够更好的做到这一点,特别是你的应用运行大量读操作。

 

分布式事务

与传统的RDBMS事务处理不同,通过利用” Two Phase Commit Protocol” 和Muliversion Concurrency Control,GemFire分布式系统中实现了自己的分布式事务来进行高效的读写操作,保证了写操作同时不影响读的性能。

 

分布式锁

分布式锁为跨VM的分布式应用提供了高可靠的协调机制,维护了跨集群分布数据的一致性。

分布式锁通过使用创建锁服务在键上加锁,最大限度地避免了数据读写操作时的冲突。

 

 

特性

 

持久化到磁盘

你不可能把所有的分区数据全部放在内存中。您能给分区模式配置溢出到磁盘,来保证内存持续可用。每个服务器都有自己的磁盘空间来存储从内存溢出的条目。

 

 

超时和清除

你能配置一个分区区域来无效或者销毁数据条目。比如在你的区域中你能设置最大的条目数,或者你能配置条目在一定时间间隔后超时。无论什么操作请把此配置应用到条目的所有拷贝。

 

 

服务器重平衡

你的服务器有时没有维护相同的数据量。这时,你能配置服务器维护的数据量使用local-max-memory属性。一个特例就是local-max-memory0,在这种情况下,服务器没有维护区域中的数据,但是维护了分区的元数据,允许他访问网络中任何一条数据条目。

 

 

数据弹性

你能添加新的服务器到正在运行的服务器集群中,让GemFire跨集群动态重分布数据。这对你的操作没有任何影响。如果你有冗余拷贝,你也能移除成员同时重平衡你的系统,没有任何的中断和数据丢失。

 

 

架构

 

 

数据存储

 

一个分区使用键对象的哈希码来决定哪个虚机存储条目。哈希码被分给大量可配置的数据桶。如果配置了冗余分区的话,每一个数据桶被指定到一个服务器或者多台服务器。当区域启动时数据桶并不被指定,但是当有数据被放在数据桶里面时,数据桶就加载这些数据。这样允许你在迁移区域之前,启动大量的成员节点。

 

 

怎样维护数据的一致性

如果你设置”redundant-copies”属性大于0,GemFire则指定每一个数据桶中一份拷贝作为主拷贝。所有到数据桶的写操作都通过主拷贝,这保证了数据桶的所有拷贝是一致的。与复制区域相比,分区也提供了相同的一致性。

a24d8c2d1810035e33e4ba37ddfbfbedf9bd8a0b

 

失效备援

如果你有冗余拷贝,那么当服务器宕机后是没有数据丢失或者服务中断的。当一个服务器出现故障,GemFire将自动重新路由数据操作到正常的成员。

064e7d394c367ea9993ca67d316da75edcb1d58a

 

在服务器出现故障之后,你不再有数据的完全备份。你能控制GemFire是否立即数据拷贝到存储冗余区,或者等待故障服务器被更换。当GemFire拷贝数据时,你仍然能继续运行区域的其他操作。

 

数据分区策略

缺省情况下,GemFire在键上直接使用哈希算法。完全控制GemFire集群中的数据分区。当应用没有引用数据条目时缺省分区正常工作。通过使用partition resolver,能保证相关条目被分区到相同的服务器上。partition resolver允许你的代码返回一个”路由对象”,这个路由对象由”键-值”组成。GemFire然后应用这个哈希算法来路由对象,如果partition resolver为多个条目返回相同的路由对象,这些条目将要被分区到相同的数据桶中,因此他们也驻留在相同的主机中。比如你能保证一个客户的所有数据都能驻留在相同的主机中,然后你能通过function routing在数据上执行多个操作。

 

你甚至能够保证数据跨区域驻留在相同的主机上。比如你有一个自定义的区域和一个交易处理区域。他们返回了客户ID作为路由对象。你能使用colocated-with 属性来指示数据将要重分布在两个不同的区域中。如果数据从一个主机迁移到另外的主机GemFire甚至保证两个区域的数据共存。详情请看function routing介绍

 

平衡数据和添加可用容量

缺省情况下,GemFire保证存储在每一个节点的数据总量是差不多的。数据的总量由你的对象的序列化量来衡量。当你添加一个新的成员,你能通过重新平衡缓存移动数据到这个新的成员。重平衡的目标是最小化成员之间的数据量差异。如果整个数据桶移动,保证数据群组和重分布得以保留。

 

 

在这个例子中,区域存储有关交易的信息。交易通过交易者的名字被组群化。当保存群组时区域重平衡移动数据到新的成员。

 

3ad244ef591b8290a5f1b9bd7b6c27fd5d960308

464843fd4932d32103362cc95c4d777cef8e2dfd 


 

 

通过设定local-max-memory参数,你能完全控制有多少数据保留在特定的成员中。服务器用更低的local-max-memory值来保存更少的数据。每个成员的数据总量为


6243d180715240918f47a85abb707257115bfa5a

lmm 为local-max-memory设定值,dataSize为存在区域中的数据总量,其乘积是总的内存量。

 

 

回调

在分区中利用Cache Loader和Cache Writer,你能在每一个成员中安装回调模块。Loaders 和 writers被调用只依赖数据的主拷贝。这就意味着在大多数情况下,Cache Loader和Cache Writer只被调用一次。然而,如果在执行一个操作时一个成员宕机了,GemFire将在主拷贝重试这个操作,Cache Loader和Cache Writer可能会被调用多次。

 

 

WAN Gateway

WAN gateway一个重要的特性是你只需要在缓存服务器上简单配置一些参数,缓存中的数据会自动,高效地复制到远程站点。并不同于基础设施层的存储设备,WAN gateway在数据管理层实现了数据的完全弹性,你能在纯双活环境来使用你的计算引擎和数据。


WAN gateway另一个重要的特性是不仅能把数据投送到灾备站点,而且能把数据投送到世界的任何一个地方。维护一致的全局视图是很多企业IT组织架构的一个令人头疼的问题,特别是当数据来源于世界的任何一个地方。 WAN Gateway 为这个问题提供了简单的解决方案。在任一地点的缓存服务器上配置双向Gateway,形成可靠的存储转发网络,能够在全球维护一致的数据。如果一个或多个地点由于某种原因不可访问,比如处于维护期,那么Gateway将把所有的数据更新放在队列中,当此地点再次启用之后数据会可靠地投递到这个地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值