美文网首页
分布式系统 - 一致性及协议

分布式系统 - 一致性及协议

作者: markfork | 来源:发表于2021-11-15 20:04 被阅读0次

    分布式系统一致性

    常见的一致性方案

    一致性算法

    1 Paxos

    1.1 Paxos 集群角色

    • Proposer - 提出议案
    • Acceptor - 参与角色
    • Learner - 不参与提案, 接收已通过提案

    1.2 提案选定流程

    Prepare 阶段

    • Proposer 选择一个提案编号 M,向超过半数的 Acceptor 成员发送prepare 请求
    • Acceptor 接收到prepare 请求,M > N (该 Acceptor 中已响应的所有 prepare 请求的最大编号 N),则将最大的N 响应给 Proposer ,并承诺不再接收小于M 的提案

    Accept 阶段

    • Proposer 接收到超过半数 Acceptor 对于 M 的 prepare 请求的响应,则发送 [M,V] 提案 Accept 请求给 Acceptor ,V 是 Acceptor 接收到响应编号中最大的 编号对应value。
    • Acceptor 接收到 Accept 请求,只要该Acceptor 没有同意过 > M 编号的提案,就通过这个提案;

    Learn 阶段

    • Proposer 将通过的提案 同步给 Learner
    Paxos协议-提案选定流程

    总结:Paxos协议的容错性很好,只要有超过半数的节点可用,整个集群就可以自己进行Leader选举,

    2 Raft 协议

    2.1 Raft 集群角色

    • Leader
    • Follower
    • Candidate - 候选者

    2.2 Leader 选举阶段

    • 初始化阶段 所有节点都是 follower 节点
    • follower 节点设置 currentIndex = 1, 设置状态为 Candidate、给自己投票、并向其他节点发送投票请求;
      • 赢得选举
      • 其他leader
      • 选举超时

    算法流程:

    • A_currentIndex > B_currentIndex = 承认A leader , B follower
    • 如果 两个Candidate得票一样多, 重选

    2.3 数据复制

    • leader 接收写 entry 请求
    • entry 发送给所有 follower ,半数 follower 回复 ok,则返回给客户端成功,并把commitindex 设置为 该entry 的index,满足 一致性.

    相关文章

      网友评论

          本文标题:分布式系统 - 一致性及协议

          本文链接:https://www.haomeiwen.com/subject/zbzumktx.html