博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【分布式】Zookeeper的Leader选举-选举过程介绍
阅读量:5906 次
发布时间:2019-06-19

本文共 650 字,大约阅读时间需要 2 分钟。

【分布式】Zookeeper的Leader选举-选举过程介绍

选举开始,每台服务器都有一张选票,并且会投自己,选自己当选Leader。    在投票完成后,会将投票信息发送给集群中的所有服务器(观察者服务器不参与选举)。

选票由两部分组成:服务器唯一标识myid和事务编号zxid,即(myid,xzid)。

zxid越大说明数据越新,在选择算法中的权重越大。

myid越大,在选择算法中的权重越大。

比较选票时会先比较zxid,zxid大的获胜,zxid相同时比较myid,myid大的获胜,胜利方选票不变,失败方选票将变成与胜利方一样,并再次将该投票发送出去。

当有过半机器收到相同的投票信息,则选出Leader,选举结束。

例如:

有A,B,C三台服务器参与竞选,myid分别为1,2,3,zxid分别为9,9,8。
选举过程为:
A收到的选票为(2,9),(3,8),与自己的(1,9)比较,选票变为(2,9),投出。
B收到的选票为(1,9),(3,8),与自己的(2,9)比较,结果不变。
C收到的选票为(1,9),(2,9),与自己的(3,8)比较,选票变为(2,9),投出。

此时B机器拥有过半选票,当选为Leader。

由上面规则可知,通常那台服务器上的数据越新(ZXID会越大),其成为Leader的可能性越大,也就越能够保证数据的恢复。如果ZXID相同,则myid越大机会越大。

参考资料:

转载于:https://blog.51cto.com/12434484/2323781

你可能感兴趣的文章
Python 1 Day
查看>>
Python基础学习笔记(十:二进制位运算)
查看>>
C语言中字符串结束符
查看>>
LCD12864使用总结
查看>>
EditPlus配置Java编译器
查看>>
app已损坏,打不开。你应该将它移到废纸篓
查看>>
Switchover and Failover说明
查看>>
linux 环境RPM 安装MYSQL5.6
查看>>
Linux文件管理和编辑常用命令
查看>>
C++ 读写文件
查看>>
海外旅游最常用的100句英语口语
查看>>
http协议进阶(五)连接管理
查看>>
服务器创建好后怎样使用远程连接工具链接的一些问题
查看>>
插件~NuGet与packages管理项目的包包
查看>>
linux卸载nomachine,NoMachine 安装与配置及使用
查看>>
企业shell常见面试题及企业实战案例深入浅出讲解
查看>>
nginx js、css多个请求合并为一个请求(concat模块)
查看>>
mybatis实战教程(mybatis in action)之五:与spring3集成
查看>>
解决浏览器Adobe Flash Player不是最新版本问题
查看>>
SQLite 约束
查看>>