分布式基础——Raft算法

分布式基础——Raft算法

介绍

Raft 是一个非拜占庭的一致性算法,即所有通信是正确的而非伪造的。N 个结点的情况下(N为奇数)可以最多容忍 (N−1)/2(N−1)/2 个结点故障。

内容

角色

  • Flower(追随者)

  • Candidate(候选人)

  • Leader(领导人)

RPCs(操作)

  • RequestVoter(请求投票):请求投票,使自己成为Leader
  • AppendEntries(追加日志):Leader向其他人同步日志或者发送心跳,保证自己的领导地位

流程

  • 各个节点等待心跳请求

image-20220406182832119

  • 迟迟等不到心跳请求,s1向自己投了一票,并进行拉票

image-20220406182942355

  • 其他节点投票,选举leader,成为追随者

image-20220406183006093

  • s1成为leader后,会周期发送心跳请求给其他节点

image-20220406183237218

  • s1挂了后会重新进行拉票选举leader

image-20220406183228900

  • s1重启,会自动成为追随者

image-20220406183328154

写入

  • 当有写入的请求时,leader优先添加数据,但还未提交数据

image-20220406183510680

  • 下一次心跳,同步日志到其他节点,也是添加了,但还未提交

image-20220406183631428

  • 其他节点响应leader的添加请求,leader提交日志

image-20220406183805910

  • 下一个心跳后,其他节点接收到leader的提交请求都会提交

image-20220406183840282

总结

Raft 用来做日志同步, Leader 负责复制日志,超过半数就可以提交。然后用了诸多限制(Election Safety、Leader Append-Only、Log Matching、Leader Completeness、State Machine Safety)保证了日志的正确性和一致性。

参考

raft一致性算法原理_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值