TiDB的raft协议和OB的paxos协议到底有什么区别?

PingCAP 官博有一些 raft 的简单源码解读,https://cn.pingcap.com/blog/?search=raft
paxos 的话可以去 阿里 公众号 之类的找

以下 from ChatGPT 3.5

Raft和Paxos都是分布式系统中用于确保一组节点能够就单个值或一系列值达成一致意见的共识算法。以下是它们之间的一些主要区别:

  1. 可读性和易理解性:Raft被设计得比Paxos更易于理解。Raft论文专门设计成比Paxos论文更易于阅读和实现。
  2. 基于领导者与无领导者:Raft使用基于领导者的方法,其中一个节点被选举为领导者,并处理所有客户端请求,而Paxos是无领导者的,并允许任何节点提议值。
  3. 成员变更:Raft明确支持成员变更,允许节点在不需要单独的共识算法的情况下加入和离开集群。Paxos不具备内置支持成员变更的功能。
  4. 日志管理:在Raft中,每个节点维护一个已达成一致意见的命令日志。领导者将日志条目发送给跟随者,跟随者复制这些条目。而Paxos协议的重点是就单个值或一系列值达成一致,而不是维护一个日志。
  5. 复杂性:虽然Raft被设计成更易于理解和实现,但Paxos在某些场景下被认为更高效。然而,Paxos也更复杂,这可能会使其更难以正确实现。

总的来说,对于那些注重实现和维护的简单性的系统,Raft通常更受青睐。而对于那些需要最大效率并且算法复杂性不是主要考虑因素的场景,可能会更偏向于使用Paxos。