# 从Paxos到Raft

# Basic Paxos

多节点就单值达成共识的算法,是一种2PC(two-phase commit)算法。可以通过Basic Paxos实现只读的分布式存储。

# 提出疑问

  • 为什么只能单值达成共识?
  • 关键是依靠哪些步骤来达成共识的?有没有让你觉得惊艳的步骤?
  • 集群中只有固定节点是proposer?是否存在单点?或性能瓶颈?
    • 任何一个acceptor都可以做proposer。
  • 提议编号(proposal number)需要保证全局唯一?如何做到?proposal number单调递增是怎么做到的?没有可能重复吗?
    • 需要保证全局唯一,且单调递增。
    • 算法中并没有说明实现方式,每个具体落地的算法(例如Raft)都有自己的实现方式
  • 当proposal number重复时,paxos是如何解决的?
    • 需要自己实现,算法中没有说明
  • proposer中途失联了,要重新选一个proposer该如何实现?
  • 如何解释Paxos的活锁问题?如何解决活锁问题?
    • 解决活锁:proposer再去提案时,加上一个随机的等待时间,避免马上去提案。

关键点:

  • 多角色
  • 两阶段
  • 共识约定

多角色:提议者(proposer)、接受者(acceptor)、学习者(learner)

两阶段:准备阶段(prepare)、接受阶段(accept)

共识约定:

# Multi-Paxos

# Raft

修改于: 8/11/2022, 3:17:56 PM