Zookeeper选举之帮派版(纯属娱乐)

2021-06-21  本文已影响0人  小丸子的呆地

尝试用帮派,来解释一下zookeeper是怎么完成选举的。
帮众—--服务器
帮众年龄-----服务器编号(myid) 假设帮众年龄都是递增的。。
贡献点-----服务器事物ID(zxid)

最初,A(1岁,0贡献) 、B(2岁,0贡献)、 C(3岁,0贡献) 三个人要搞帮派,那得有人当老大啊,好的开始投票选举。

选举必须遵守的规则

  1. 大家要把票投给贡献点更多的,否则就投给年龄更大的
  2. 有一个人拿到半数以上的票了的话 直接成为老大
  1. A 投票给A自己,并且 BC 都还没投票,这个时候 A持有获得他自己投给自己的选票,但是由于没有达到规则2,所以A处于观望阶段(Looking)。
  2. B 投票给B自己,并且接收到了A投A自己的选票,对比了一下,因为B岁数更大,所以心安理得的继续投给B自己,并且告诉A;这时候A拿到B的选票,对比了一下,贡献值一样,年龄没人家大,所以更改选票,投B了;
  3. 这时候B接收到A更改后的选票,发现自己拿到两票,ok,直接晋升老大;
  4. 这时候C进来了,发现已经有老大了,没办法了 只能自动成为小弟;

后面,帮派一直在发展,新增了D E F帮众,但是B一直是老大;老大每次斩获了战利品,都会把贡献点同步给所有帮众;
有一天,跟别的帮派火并,B老大展战死(宕机);国不可一日无君啊,大家哀悼完B老大,就开始进行新一轮老大选举;

这时候 A(1岁,11贡献)、 C(3岁,11贡献) 、D(4岁,10贡献) 、E(5岁,10贡献) 、F(6岁,10贡献)
还是按照之前的规则
C终于如愿以偿的当上了老大 等待下一次战死(宕机)

上一篇下一篇

猜你喜欢

热点阅读