ZooKeeper API使用之实现分布式选举


分布式选举的设计

使用Zookeeper API 来实现一个分布式选举时,应该怎样设计呢?

zookeeper 分布式选举源代码:https://github.com/apache/zookeeper/tree/branch-3.5.5/zookeeper-recipes/zookeeper-recipes-election

使用临时顺序 znode 来表示选举请求,创建最小后缀数字 znode 的选举请求成功。在协同设计上和分布式锁是一样的,不同之处在于具体实现。不同于分布式锁,选举的具体实现对选举的各个阶段做了监控。

如上图所示,有三个选举请求 n_0000000000,n_0000000001,n_0000000002,n_0000000000这个节点后续数字最小,所以它赢得了选举成为了 leader,n_0000000001和n_0000000002的选举排在n_0000000000节点的后面。

代码展示

运行测试用例

运行 zookeeper-recipes-queue 中的单元测试文件 DistributedQueueTest:

cd zookeeper/zookeeper-recipes/zookeeper-recipes-election

mvn test -Dtest=org.apache.zookeeper.recipes.leader.LeaderElectionSupportTest

参考


文章作者: 张权
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张权 !
评论
  目录