文章目录
- leader选举
- 日志复制
- 安全性
- preVote 阶段
- preVote 投票阶段
- preVote阶段的作用
- 集群选举
leader选举
日志复制
安全性
- leader只能commit当前的term的日志,不能提交其他term的日志
- leader只能增加当前的日志,不能删除以前item提交的日志
- 只能选择日志最新的节点为leader
- 匹配特性,通俗来讲,就是要保证日志序列要一致
preVote 阶段
preVote 投票阶段
- 投票需要判断leader是否存在,并且心跳并没有超时
- 投票的时候需要判断被投票的节点的日志要大于本节点
- 并且是否能够获得一半以上的点
然后才能新增 term 然后再发起leader 选举
preVote阶段的作用
-
防止某个节点因为出现分区后,恢复后,再次发起leader选举,此处因为他会先进入prevote阶段,因为此时该阶段回去判断是否日志索引记录多少,因此该节点不能进入leader选举流程
-
如果出现网络分区(注意分区后节点数还是和分区前是一样的)
如果新分区的节点需要经过preVote
因为此时其他节点大概率还是保持和leader通信的 -
集群成员变更的时候,下线C-old节点的时候,可能会因为暂时失联再发起leader选举
集群选举
参考连接