对共识算法 Paxos、Raft 的一些理解

文章目录

    • 共识算法针对的问题
    • 为什么对 Paxos、Raft 等的研究很重要
    • Paxos、Multi-Paxos、Raft

共识算法针对的问题

分布式系统中,基础的 共识算法(Consensus Algorithm) 希望解决的是如下问题:消息有乱序、丢失、重复情况下,多个分布式节点对一个值达成最终绝对一致1

  • 不考虑消息内容的篡改(Byzantine
  • 节点存储必须绝对可靠

为什么对 Paxos、Raft 等的研究很重要

传统 2PC(两阶段提交)、3PC(三阶段提交) 的缺点是一个节点宕机则系统不可用(或在出现 network partition 后存在 脑裂 问题不能解决);这些现代共识算法的目标就是在有多个副本同时参与、超半数仍正常工作的情况下(少数副本可以挂掉,从而可用性更高了)仍能保证 100% 一致性

Paxos、Multi-Paxos、Raft

Paxos 和 Raft 的前世今生 | 知乎1 这篇文章是我认为讲解的比较让我抓住了脉络的文章,可以参考。

  • Paxos: 保证单个提案的一致
    • 方法:多个 Acceptors;Proposal = (ID, V),ID 有全序关系;超半数同意
    • 保证永远可用吗?不:
      • 一样可能多数都挂掉,只是可靠性更高了
      • 原始的 Paxos 会出现两阶段化带来的活锁
    • 值得阅读:
      1. Paxos 初版论文 from Lamport - The Part-Time Parliament, TOCS’982
      2. Paxos 二版解释 from Lamport - Paxos Made Simple3
      3. 最清楚的解释来自 wiki:https://zh.wikipedia.org/wiki/Paxos%E7%AE%97%E6%B3%954
  • Multi-Paxos:提高性能但只需保证一批提案的最终一致
    • 方法:利用 Paxos 选举唯一的 leader,而后在 leader 有效期内所有的议案都只能由 leader 发起
    • 值得阅读:http://oceanbase.org.cn/?p=1115
  • Raft:更贴近实践、更易理解的 Multi-Paxos 方案
    • 方法:加入 Timeout 机制;Leader Election & 任期(Term);Log Replication,Paxos 中的 ID 即为 Raft 中的 Term + Log Index,一旦出现更新的 log 则听从,保证 log 的最终一致性
    • 值得阅读:
      1. Raft 官网 - https://raft.github.io/
      2. Raft 论文 from Stanford - In Search of an Understandable Consensus Algorithm6
      3. 非常好的在线演示:http://thesecretlivesofdata.com/raft/

  1. https://zhuanlan.zhihu.com/p/46531628 ↩︎ ↩︎

  2. http://lamport.azurewebsites.net/pubs/lamport-Paxos.pdf ↩︎

  3. http://lamport.azurewebsites.net/pubs/Paxos-simple.pdf ↩︎

  4. https://zh.wikipedia.org/wiki/Paxos%E7%AE%97%E6%B3%95 ↩︎

  5. http://oceanbase.org.cn/?p=111 ↩︎

  6. https://raft.github.io/raft.pdf ↩︎

你可能感兴趣的:(算法理论)