简单讲解Zookeeper的选举机制

都知道zookeeper集群中有一个leader和多个followers,刚学习的时候还非常疑惑到底是怎么定义leader和follower,后来了解了他的选举机制后才知道其实思路还是很简单的:
简单讲解Zookeeper的选举机制_第1张图片
1、首先要知道zookeeper的半数机制,就是集群中只要有半数以上的节点存活,这个集群就能正常服务,比如说一个集群中有6台服务器,但其中只有4台是能够正常提供服务的,那这个集群就能正常服务了,反之若刚好只有3台能正常服务,没有达到半数以上,那这个集群就失活了。

1)再来说它的选举机制,当第一台server加进来启动的时候,需要选出一个leader,这时他会发出一个报文,但此时只有一台server在启动,所以是不会有任何响应的,所以server1将自己的一票投给自己,但由于只有一台server,所以server1也当不上leader,因此此时选举状态处于Looking状态

2)第二台服务器server2启动后,它先将自己的一票投给自己,然后会与server1进行通信,并且两者会交换选举结果,发现两者的票数都是1,因此server1要将自己的一票投给myid值较大的server2,所以此时server2有两票,他胜出了,但是此时只有两台server,没有达到半数以上,因此集群也无法正常服务

3)此时server3来了,给自己投了一票,同时还会与前两台server进行通信,此时达到了半数,而server3的myid值较大,因此server1和2的票数将会投给server3,server3胜出,server数超过半,此时zookeeper能正常服务

4)此时server4和server5又进来了,给自己各投了一票,但是与其他的server通信后才发现原来leader已经选出来了,所以选举就不用再进行下去了,server3当选leader

ps:字有点多,但还是很容易理解的,见谅

你可能感兴趣的:(JAVA,zookeeper)