2021SC@SDUSC
选举
最新的版本里的选举算法只有一个 ,即FastLeaderElection方法。 选举:通过特定的选举算法选出leader, 第一步:当系统刚启动时,3 个服务器当前投票均为第一轮投票。此时每个服务器都推选自己,并将选票信息广播出去。 第二步:根据判断规则,先比较数据zxid,数据zxid大者胜出;其次再判断id, 大者胜出;然后再将自身最新的选举结果发送出去。 第三步:选出的主节点计算得票数,如果超过集群中节点半数,则该节点被选举为leader
同步
Leader 要负责将本身的数据与 Follower 完成同步,做到多副本存储。这体现了CAP中的高可用和分区容错。、 完成Leader选举(新的 Leader 具有最高的zxid)之后,在正式开始?作(接收客户端请求)之前,Leader服务器会?先确认事务?志中的所有Proposal是否都已经被集群中过半的机器提交了,即是否完成数据同步 。
Leader服务器需要确保所有的Follower服务器能够接收到每?条事务Proposal,并且能够正确地将所有已经提交了的事务Proposal应?到内存数据中。等到 Follower服务器将所有其尚未同步的事务 Proposal 都从 Leader 服务器上同步过来并成功应?到本地数据库中后,Leader服务器就会将该Follower服务器加?到真正的可?Follower列表中,并开始之后的其他流程。
广播
当一台新的服务器启动后加入到集群中,如果此时集群中已经存在一个Leader服务器在负责进行消息广播,那么加入的服务器会自动进入数据恢复模式: 找到Leader 所在的服务器,并与其进?数据同步,数据同步完成后参与到消息?播流程中。
|