领导人选举:Etcd vs Zookeeper vs Hazelcast

时间:2018-12-04 03:13:52

标签: apache-zookeeper hazelcast high-availability consistency etcd

我们正在为实施由多个(例如3个)实例组成的服务(用Java编写)实现领导者选举的最佳选择,以实现高可用性。我们的目标是在任何给定时间只有一个实例处于活动状态。

很高兴听到您对以下选项的意见:

1)淡褐色。使用“法定人数”和一把锁,我们可以实施领导者选举。但是,我们可能会遇到裂脑问题,一段时间内可能会出现两名领导人。另外,似乎Hazelcast不支持SSL。

2)Zookeeper。我们可以在Zookeeper集成(在我们的每个服务实例上运行ZK节点)的顶部实现领导者选举。 Zookeeper是否比Hazelcast提供更好的一致性保证?它还会遭受裂脑问题吗?

3)等。我们可以使用Jetcd库,它似乎是最现代,最强大的技术。在一致性方面真的比Zookeeper好吗?

谢谢。

1 个答案:

答案 0 :(得分:5)

1)目前,Hazelcast不适合领导人选举。正如您已经提到的,它可以在网络拆分期间选择可用性,这可以导致选举多个领导者。

在Hazelcast集群内部使用Raft共识来建立Hazelcast原子(锁,信号量,atomiclong等)方面正在积极发展。预计将在下一版本中发布。

2)Zookeeper不会遭受上述脑裂问题的困扰,当网络分裂发生时,您将不会观察到多个领导者。 Zookeeper建立在ZAB原子广播协议上。

3)Etcd正在使用Raft共识协议。 Raft和ZAB具有类似的一致性保证,均可用于实施领导者选举过程。