以下问题旨在解决严重问题,而不是无聊。我缺乏分布式系统的经验,但是我确实了解Basic Paxos的工作原理以及为什么选择领导者是有用的。不幸的是,我的理解不够深刻,无法理解下面的问题。
在Consensus on Transaction Commit文件的第8页(链接的PDF的第11页)中,我们有以下声明。
如果这个说法是正确的,并且是Paxos达成共识的目的,那么为什么Paxos本身通常不用于领导人选举?
此外,同一篇论文赞同Stable Leader Election论文中描述的领导者选举算法。
如果两个问题相等,并且同一篇论文赞同不同的领导者选举算法,那么为什么不使用另一种算法来解决一般共识问题而不是Paxos ?
最佳答案
Paxos用于领导者选举。在具有领导者的paxos变体中(例如Multi-paxos,Raft),领导者是由Paxos实例选择其数据的节点,该节点或领导者是在其自己的过渡中选举产生的(某些人使用术语Paxos实例;我更喜欢将共识算法视为在分布式有限状态机中选择转换。)
所有正确的共识算法都可以映射到Basic Paxos ,但是每种算法都针对不同的事物进行了优化。这些包括多人Paxos,木筏,ZAB,垂直Paxos,便宜Paxos和链复制。 (后三个以及所有仅需要failure_tolerance+1
节点的共识算法,也需要另一个共识系统来进行重新配置。但是我离题了。)
稳定领导者选举论文不只是Paxos:它包括故障检测器(从粗略的眼光看,它是一个基于租约的领导模型。)因此,它比Basic Paxos昂贵。
在我维护的需要领导者的系统中,故障检测器将使用共识协议(protocol)来淘汰/选举领导者,但否则它们是完全独立的协议(protocol)。
关于protocols - 为什么不使用Paxos完成Paxos领导者选举?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23798724/