我们正在选择最佳的选项来为我们的服务(用Java编写)实现领导者选举,该服务由多个实例(例如3个)组成,以实现高可用性。我们的目标是在任何给定时间只有一个活动实例。
很高兴听到您对以下选项的意见:
1)Hazelcast。使用“仲裁”和锁定,我们可以实现领导者选举。但是,我们可能会遇到脑裂问题,在一段时间内可能存在两个领导者。此外,似乎Hazelcast不支持SSL。
2)Zookeeper。我们可以在Zookeeper集合(在我们的服务每个实例上运行ZK节点)的顶部实现领导者选举。 Zookeeper是否提供比Hazelcast更好的一致性保证? 它也会遭受分裂大脑问题吗?
3)Etcd。 我们可以使用Jetcd库,它似乎是最现代和强大的技术。从一致性方面看,它真的比Zookeeper更好吗?
谢谢。