hazelcast 中的同步复制

vam*_*msi 3 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 中的复制真的是同步的吗?我需要同时更新所有者节点和备份节点中的值。

小智 5

这里的解释更正确。在CAP定理的背景下,Hazelcast是一个AP产品。因此,尽力一致性旨在复制,同步和异步备份都是惰性复制模型的实现。正如页面中所解释的;两个选项之间的区别是;

  • 在同步备份中,调用者会阻塞,直到备份副本应用备份更新并将确认发送回调用者
  • 异步备份的工作方式就像“一劳永逸”。

下面请看 Hazelcast 参考手册的部分内容:

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