我们正在评估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中的复制是否真正同步?我需要在所有者和备份节点中同时更新值。
答案 0 :(得分:2)
here中的解释更为正确。在CAP定理的背景下,Hazelcast是一个AP产品。因此,Best-Effort Consistency旨在进行复制,同步和异步备份都是惰性复制模型的实现。正如页面中所解释的那样;两种选择之间的区别是;
下面,请参阅Hazelcast参考手册中的部分:
Hazelcast的复制技术使Hazelcast集群能够提供高吞吐量。但是,由于系统中的临时情况(例如网络中断),备份副本可能会错过某些更新并与主服务器不同。备份副本还可能会遇到长GC暂停或VM暂停,并落后于主数据库,这种情况称为复制延迟。如果Hazelcast分区主副本成员在其自身与备份之间存在复制延迟时崩溃,则数据的强一致性可能会丢失。