Hazelcast异步写传递吗?

时间:2016-04-13 14:04:12

标签: replication hazelcast

我正在使用Hazelcast进行一些简单的基准测试,看看它是否符合我们对分布式数据网格的需求。这个想法是让奇数个服务器(例如5个)与'> N / 2'复制(例如3)。

在我的本地计算机上运行所有服务器和客户端(没有网络延迟),我得到以下结果:

5 x H/C server (sync backup = 2, async backup = 0); 100 Client Threads : 35,196 puts/second

5 x H/C server (sync backup = 1, async backup = 1); 100 Client Threads : 41,918 puts/second

5 x H/C server (sync backup = 0, async backup = 2); 100 Client Threads : 52,007 puts/second

正如预期的那样,异步备份允许比同步备份更高的吞吐量。对于我们的用例,我们可能会选择中间选项(1x同步和1x异步),因为这样可以在弹性和性能之间取得可接受的平衡。

我的问题是:如果Hazelcast配置了1x同步和1x异步,并且节点在执行同步备份后崩溃(服务器返回'确定'到客户端和客户端线程继续)但在执行异步备份(因此数据仅在一个副本而不是第二个副本上),接收同步备份的节点是否会接收异步备份的任务,或者只是等到整个群集重新平衡并且'失踪'来自崩溃节点的数据是从副本重新分发的?如果是后者,一旦群集重新平衡将会有总共3个数据副本,因为如果节点没有崩溃,或者只有2个副本因为同步&#39 ; d节点假定另一个节点已经收到了它的副本?

1 个答案:

答案 0 :(得分:1)

分区所有者负责创建所有备份。 换句话说:第一次备份不会为第二次备份创建新的备份请求 - 它是所有者的全部责任。

如果持有备份副本的成员过时,则反熵机制启动,备份分区将更新以匹配所有者。

当成员发生故障时,第一个(= sync)备份最终会被提升为新的分区所有者。新所有者有责任确保配置的冗余得到兑现 - 将创建新的备份以确保配置中有2个备份。