我读了一篇名为“Paxos简单”的论文,但仍有一些混淆:
“paxos算法实例”是指什么?每个实例都表明外部客户端有输入/命令吗?并且每个实例的paxos算法将并行执行???
如果只有一个能够发出提案的“杰出”提议者,那么paxos算法与两阶段提交算法的区别是什么?
我们在哪里可以在实际项目中应用paxos算法?
这里的论文似乎给出了更清晰的描述: http://research.microsoft.com/pubs/64634/web-dsn-submission.pdf
还有什么想法吗?
答案 0 :(得分:10)
“paxos算法实例”是指什么?每个实例都表明外部客户端有输入/命令吗?并且每个实例的paxos算法将并行执行???
我在another question回答了“实例”问题,所以我将在这里总结一下。
基本上,它就像是说“快速排序的实例”来引用算法的一次运行。对于Paxos,它不是对列表进行排序,而是在多个主机上选择一个值。多个paxos实例可以并行运行。参与者必须意识到这一点,所以明确提到它是好的。
如果只有一个能够发出提案的“杰出”提议者,那么paxos算法与两阶段提交算法的区别是什么?
Distinguished Proposer 是一种优化,不是算法的要求。 Distinguished Proposer减少了两个提议者跳跃准备/接受消息的争用,如果您希望实例完成,这很重要。在此模型中,节点将请求转发给Distinguished Proposer,而不是为自己提出建议。如果它认为杰出建议者已经死了那么它只是为自己提出建议。 (它不一定是/它永远不会100%确信尊敬的提议者已经死了)。
我们在哪里可以在现实世界/项目中应用paxos算法?
首先,我使用Paxos进行领导者选举。例如,如果我有几个可以执行任务的节点是数据库主服务器,我将Paxos用于paxos实例以选择主服务器。
二级用例是一个强大的一致性数据库。这个问题是由于Paxos中所需的消息数量很慢,所以我不会将它用于其他数据库更好的服务。也就是说,我主要用它来配置。以上面提到的数据库主要领导者选举为例。我存储结果,以便节点可以查询诸如“谁 当前数据库主机?”之类的内容。 Paxos也发布了它的结果,所以在正常模式下我只是听这个流而不是实际查询。