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


    一旦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驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Winget
    全部所学知识
    重装系统
    srs更改端口号导致webrtc播放异常
    .NET性能优化方面的总结(转)
    从自动变换页面背景CSS改写成变换背景图
    网页级在线性能网站测试介绍
    ASP.NET服务器端控件学习(一)
    Nginx源码分析内存池
    使用Memcached提高.NET应用程序的性能
  • 原文地址:https://www.cnblogs.com/itdef/p/9640286.html
Copyright © 2020-2023  润新知