6

我读了一篇名为“Paxos made simple”的论文,但仍然有些困惑:

  1. “paxos算法的实例”指的是什么?每个实例是否表明有来自外部客户端的输入/命令?并且每个实例的paxos算法将并行执行???

  2. 如果只有一个“杰出”的proposer可以发出proposal,那么paxos算法和2-phase commit算法有什么区别???

  3. 在实际项目中,我们可以在哪里应用 paxos 算法?

似乎这里的论文给出了更清晰的描述: http ://research.microsoft.com/pubs/64634/web-dsn-submission.pdf

还有什么想法吗?

4

1 回答 1

10

“paxos算法的实例”指的是什么?每个实例是否表明有来自外部客户端的输入/命令?并且每个实例的paxos算法将并行执行???

我在另一个问题中回答了“实例”问题,所以我在这里简单总结一下。

基本上,这就像说“快速排序的实例”来指代算法的一次运行。在 Paxos 的情况下,它不是对列表进行排序,而是在多个主机上选择一个值。paxos 的多个实例可以/正在并行运行。参与者必须意识到这一点,因此最好明确提及。

如果只有一个“杰出”的proposer可以发出proposal,那么paxos算法和2-phase commit算法有什么区别???

Distinguished Proposer是一种优化,不是算法的要求。Distinguished Proposer 减少了两个提议者跨越准备/接受消息的争用,如果您希望实例完成,这很重要。在此模型中,节点将请求转发给 Distinguished Proposer,而不是为自己提出。如果它认为 Distinguished Proposer 已经死了,那么它只是为自己提出建议。(它不必/它永远不能 100% 确信杰出的提议者已经死了)。

我们可以在现实世界/项目中在哪里应用 paxos 算法?

首先,我使用 Paxos 进行领导人选举。例如,如果我有几个节点可以做一个任务是一个数据库Master,我使用Paxos 到一个paxos 实例来选择master。

次要用例是作为强一致性数据库。这样做的问题是,由于 Paxos 中需要的消息数量,它可能会很慢,所以我不会将它用于由不同数据库更好地服务的事情。也就是说,我主要将它用于配置。以上面提到的数据库主领导选举为例。我存储结果,以便节点可以查询诸如“谁当前数据库主服务器?”之类的内容。Paxos 也会发布它的结果,所以在正常模式下我只是听这个流而不是实际查询。

于 2012-05-29T18:27:48.617 回答