当前位置: 首页 > news >正文

分布式一致性协议Raft

Raft协议

  • 基本运行原理

基本运行原理

  1. 集群中的节点有3中状态:Leader,Candidate,Follower,每个节点的初始状态都是Follower。
    Leader:1、选举产⽣。多数派决定。2、向Follower节点发送⼼跳,Follower收到⼼跳就不会竞选Leader。3、响应客户端请求。集群内所有的数据变化都从Leader开始。4、向Follower同步操作⽇志。具体实现时,有的产品会让发到Follower上的请求转发到Leader上去。也有的直接拒绝
    Follower:1、参与选举投票。2、同步Leader上的数据。3、接收Leader的⼼跳。如果Leader⻓期没有发送⼼跳,就转为Candidate,竞选Leader。
    Candidate:没有Leader时,发起投票,竞选Leader。
  2. 每个节点有随机的选举休眠时间,休眠时间达到后向其他节点发出投票申请,自己变为Candidate,投自己一票,每发起一轮投票任期+1
  3. 每个节点有一票,投给先收到的投票申请
  4. 收到半数以上的投票的节点成为Leader,同时发送心跳消息通知其他节点,其他节点变为Follower,Follower每次收到Leader的心跳都重置休眠时间重新开始
  5. 集群的消息都由Leader处理,如果Follower收到请求也要转发给Leader处理
  6. Leader收到数据修改请求后,发送给Follower,收到半数以上回复则提交修改,通知Follower提交修改,同时响应请求者修改成功
  7. 如果节点发生网络分区,原先的Leader继续发送心跳请求,不在同一分区的Follower收不到请求,休眠时间到达后会重新选举出Leader;网络恢复后会有多个Leader发送心跳消息,任期高的Leader获胜,其他变为Follower,期间未修改成功的数据回滚(未达到半数一以上),可能发生数据丢失
  8. 如果没有节点收到的投票超过半数,随机休眠时间后重新发起一轮选举,直到选举成功
http://www.xdnf.cn/news/450001.html

相关文章:

  • 动物乐园-第16届蓝桥第5次STEMA测评Scratch真题第5题
  • 11-SGM41299-TEC驱动芯片--40℃至+125℃-3A
  • 1. Go 语言环境安装
  • 数据清洗的艺术:如何为AI模型准备高质量数据集?
  • 《Python星球日记》 第71天:命名实体识别(NER)与关系抽取
  • 拓展篇、github的账号创建
  • Oracle中的select1条、几条、指定范围的语句
  • 【证书与信任机制​】证书透明度(Certificate Transparency):如何防止恶意证书颁发?​​
  • 【1000以内具有12个以上因子的整数并输出它的因子】2021-12-27
  • 如何在Mac电脑上的VScode去配置C/C++环境
  • 生成式AI:人工智能的新纪元
  • 请求内存算法题
  • 综述:拓扑材料的热磁性质
  • WordPress 和 GPL – 您需要了解的一切
  • 【leetcode】349. 两个数组的交集
  • WindTerm终端工具功能与优缺点分析
  • mysql的一个缺点
  • libmemcached库api接口讲解一
  • 开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
  • c++之 sort()排序
  • Unity 小提示与小技巧[特殊字符]
  • 基于C#实现中央定位服务器的 P2P 网络聊天系统
  • 大二java第一面小厂(挂)
  • C++【STL】(2)string
  • 直流电机风速仪
  • 免费Ollama大模型集成系统——Golang
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架
  • lua 作为嵌入式设备的配置语言
  • windows系统下编译libdxfrw项目进行dxf文件解析至qt项目中
  • Standalone 模式配置及运行