Zookeeper的leader选举过程
3 月,跳不动了?>>> Leader选举 是保证数据分布式一致性的关键所在。当zookeeper集群中的一台服务器出现下列两种情况之一时,需要进入Leader选举。 (1)服务器初始化启动。 (2)服务器运行期间无法和Leader保持连接。 1.服务器启动时期的Leader选举 若进行Leader选举,则至少需要2台机器,这里选取3台机器组成的服务器集群为例。在集群初始化阶段,当有一台服务器Server1启动时,其无法单独进行和完成Leader的选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Leader,于是进入Leader选举过程。选举过程如下: (1) 每个Server发出一个选票。 由于是初始情况,Server1和Server2都会将自己作为Leader服务器来进行投票,每次投票会包含所推举的服务器的myid和ZXID,使用(myid, ZXID)来表示,此时Server1的投票为(1,0),Server2的投票为(2,0),然后各自将这个投票发给集群中其它机器。 (2) 接受来自各个服务器的投票。 集群中每个服务器收到投票后,首先 判断该投票的有效性 ,如检查是否为本轮投票,是否来自Looking状态的服务器。 (3) 处理投票。 针对每一个投票,服务器都需要将别人的投票和自己的投票进行PK,PK规则如下: 优先检查ZXID。