Hazelcast 2.0 新版特性介绍

Hazelcast是面向Java的缓存、集群及数据分发解决方案。最近,它的2.0版本发布了。作为新版本的一部分,该产品提供了商用企业版和免费的开源社区版。

其中,社区版在Apache许可2.0下发布,并托管于Google Code中。2.0版本包含了一个分布式备份功能,用以确保每个结点都能均匀地被所有其他结点备份。Hazelcast创始人Talip Ozturk告诉InfoQ说,“我相信我们的备份分发是一个全新的解决方案”。

写道
采用分布式数据备份,结点在丢失时仅会对集群造成很小的影响。这点在内存中有大数据时尤为重要。

另外,企业版增加了堆外(off-heap)存储(注:Hazelcast中将其称作弹性内存(Elastic Memory))、附加的安全能力和一个原生的C#客户端。Hazelcast解决方案的工作原理是将差不多大小的数据分布到集群中的每个结点上。例如,在一个50个结点的结点集群中,每个结点存储20GB的基本数据以及20GB的备份数据。结点1数据会分成1/49大小的若干份,并由剩余49个结点中的每一个进行备份。如果结点1下线,那么任何迁移都不用就可以让集群保持均衡。随着新节点加入到系统中,Hazelcast会慢慢地将数据迁移到新结点来让所有结点上的数据保持均衡。 

新版2.0中的其他特性包括:

  • 并行IO,它将对内(In)和对外(Out)通信联合到单个线程中(在1.0版本中,每个成员会拥有对内和对外线程各一个,用作处理与其他使用NIO信道的成员进行通信)。
  • 改善连接管理,Hazelcast在破损连接被宣布死亡之前会尝试进行修复。
  • 为Queue、List、Set和Topic提供新的事件容器。

出于安全考虑,该产品包含了一份基于JAAS的实现,用作验证集群成员及客户端,并对客户端操作进行访问控制检查。访问控制可根据终端点委托或代码进行管理,而安全性可以通过使用XML或API启用和配置。

弹性内存本质上是一种解决过长GC中断时间(pause time)的变通方案。Azul推出的C4收集器是一个例外,它消除了所有的GC中断。借助它,商业JVM中的垃圾收集中断时间会随内置堆的大小明显增长。弹性内存可以减少JVM堆的大小,从而降低垃圾收集的中断时间。关于这点,Ozturk给出了一个大致的建议:

写道
如果你的每个JVM都拥有10GB以上的数据,或者有超过1KB的值对,那么可以使用弹性内存。而如果你的每个JVM数据在4GB左右,或者少于a KB,那么我们不建议使用弹性内存。

 Hazelcast的弹性内存采用直接字节缓存区(direct byte buffer)实现,其中每个缓存区分为若干块,每块默认大小为1KB。这个特性类似于Oracle的Coherence、Terracotta的Ehcache以及一些其他提供商的缓冲方案。

猜你喜欢

转载自hae.iteye.com/blog/2088039