“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 也会发布它的结果,所以在正常模式下我只是听这个流而不是实际查询。