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

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

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

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

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

基本操作记录

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

再追加一个+2操作

扫描二维码关注公众号,回复: 3166733 查看本文章

网络分区

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/itdef/p/9640286.html