hazelcast

时间:2018-03-05 16:21:55

标签: hazelcast hazelcast-imap

我们正在评估Hazelcast的一个用例,我对hazelcast中的复制存有疑问。

http://docs.hazelcast.org/docs/latest-development/manual/html/Distributed_Data_Structures/Map/Backing_Up_Maps.html中提到“备份操作是同步的,所以当map.put(key,value)返回时,保证映射条目被复制到另一个成员”。

但是在另一个页面http://docs.hazelcast.org/docs/latest-development/manual/html/Consistency_and_Replication_Model.html中,提到“有两种类型的备份复制可用:同步和异步。尽管它们的名称暗示,但这两种类型仍然是懒惰(异步)复制模型的实现”。

这两个陈述看起来有点矛盾。有人可以请点亮一下吗?

Hazelcast中的复制是否真正同步?我需要在所有者和备份节点中同时更新值。

1 个答案:

答案 0 :(得分:2)

here中的解释更为正确。在CAP定理的背景下,Hazelcast是一个AP产品。因此,Best-Effort Consistency旨在进行复制,同步和异步备份都是惰性复制模型的实现。正如页面中所解释的那样;两种选择之间的区别是;

  • 在同步备份中,调用程序块直到备份副本应用备份更新并将确认发送回调用方
  • async备份与fire&忘记。

下面,请参阅Hazelcast参考手册中的部分:

  

Hazelcast的复制技术使Hazelcast集群能够提供高吞吐量。但是,由于系统中的临时情况(例如网络中断),备份副本可能会错过某些更新并与主服务器不同。备份副本还可能会遇到长GC暂停或VM暂停,并落后于主数据库,这种情况称为复制延迟。如果Hazelcast分区主副本成员在其自身与备份之间存在复制延迟时崩溃,则数据的强一致性可能会丢失。