|NO.Z.00007|——————————|BigDataEnd|——|Hadoop&Zookeeper.V07|——|Zookeeper.v07|内部原理|Leader选举|ZAB一致性协议.v01|

一、Zookeeper内部原理
~~~     [zookeeper内部原理之Leader选举]
~~~     [zookeeper内部原理之ZAB一致性协议]
### --- Leader选举:选举机制

~~~     # 半数机制:
~~~     集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。
~~~     # Zookeeper虽然在配置文件中并没有指定Master和Slave。
~~~     但是,Zookeeper工作时,是有一个节点为Leader,其它为Follower,
~~~     Leader是通过内部的选举机制产生的。
二、集群首次启动
### --- 集群首次启动

~~~     假设有五台服务器组成的Zookeeper集群,它们的id从1-5,
~~~     同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。
~~~     假设这些服务器依序启动,来看看会发生什么,
三、Zookeeper的选举机制
### --- Zookeeper的选举机制

~~~     # 服务器1启动,
~~~     此时只有它一台服务器启动了,它发出去的报文没有任何响应,
~~~     所以它的选举状态一直是LOOKING状态。
~~~     # 服务器2启动,
~~~     它与最开始启动的服务器1进行通信,互相交换自己的选举结果,
~~~     由于两者都没有历史数据,所以id值较大的服务器2胜出,
~~~     但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),
~~~     所以服务器1、2还是继续保持LOOKING状态。

~~~     # 服务器3启动,
~~~     根据前面的理论分析,服务器3成为服务器1、2、3中的老大,而与上面不同的是,
~~~     此时有三台服务器选举了它,所以它成为了这次选举的Leader。
~~~     # 服务器4启动,
~~~     根据前面的分析,理论上服务器4应该是服务器1、2、3、4中最大的,
~~~     但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了。

~~~     # 服务器5启动,
~~~     同4一样称为follower。
四、集群非首次启动
### --- 集群非首次启动

~~~     每个节点在选举时都会参考自身节点的zxid值(事务ID);优先选择zxid值大的节点称为Leader!!

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示