我在这里粘贴了paxos算法的伪代码:
What is a "view" in the Paxos consensus algorithm?
并且想知道是否有人能指出我正确的方向。
该算法表明每个节点都有一个“状态”,其中包含节点应该跟踪的一堆信息。
假设我们有两个节点:节点#1和节点#2。在最简单的情况下,节点#2加入节点#1,它们都播放paxos。在2个连接1之后,节点#1和节点#2的状态到底发生了什么? “视图”数据结构何时发生变化,它包含哪些内容?如果有人可以向我解释两个节点播放paxos的简单情况,那么我想我可以找出多个节点的情况。
我目前的理解(我非常肯定不正确)如下:
现在我们进入第2阶段
这是我很困惑的地方。
节点#1是领导者,它接收两个PROMISE(0,{空列表})消息。根据该算法,如果领导者在视图[0]中获得大多数承诺,则它可以为“v”设置值并将ACCEPT消息发送给所有响应者。
我感到困惑的是,目前领导者的观点[0]是空的,那么如何计算空列表的大部分?
此外,我们假设领导者已收到大部分承诺并继续设置v =可ping的节点集(包括self)。什么是可ping的节点?它只是节点#1和节点#2?
非常感谢所有/任何帮助,肯定会给那些有帮助的人奖励积分。
答案 0 :(得分:0)
伪代码不适用于特定问题。事实上,教授说我们不需要使用伪代码,如果我们不想并且说我们可以查看其他Paxos论文(即paxos简单,paxos现场等等),以获得实施该算法的指导。也许你是对的,我应该看维基百科来实现这个算法。所以视图[..]只是一个哈希映射,节点可以选择它想要的任何值。如果我理解正确,你会说多数声明只是检查它是否收到了“足够的”PROMISE消息。但是,了解我们是否足够的唯一方法是节点是否跟踪其组成员是谁。这意味着我需要一个不同的数据结构。
此外,由于您发表了评论,我无法给予您积分。如果您发布答案,我可以给你积分。