分布式协议学习笔记(二) 日志复制

一旦Leader选定之后,我们将复制所有的操作到每个节点上。

这个是通过心跳包中的Append Entries message结构体来进行实现的

客户端发送一个操作到Leader中(即使客户端发送操作到Follower,操作也会被转发到Leader处理)

Leader将操作附加到自己的Log日志中

基本操作记录

Leader将随后将操作发送给Follower,Follower再回复给Leader,当Leader确认该操作被一半以上设备接受,则提交该操作Log(正式记录),并且回复给客户端操作处理结果

再追加一个+2操作

网络分区

现在假设有5个服务器节点,由于某种原因被切割成两个网络分区.根据之前得的论述,在经过一段选举超时间后,各个区域都会选举出各自的Leader(当然 如果被隔开的是两个Folloer 那么就只能选举出一个新的Leader和两个长期处于选举状态的节点)

假设有不同的客户端分别给不同的区域的Leader发送操作. 设置8的操作会被提交,因为该操作可以被过半的节点接受,而设置3的操作不行。

撤销网络分割后,我们会看到,由于后选举出来的Leader具有更高的TERM计数,所以设置8的操作被更新到每个节点上

A B节点会回滚自己之前的Log,并且更新新的Leader的Log记录

作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
阿里打赏 微信打赏
原文地址:https://www.cnblogs.com/itdef/p/9640286.html