问题标签 [paxos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
distributed-system - 《自由选择的另一个优势:完全异步的协议协议》解释
请任何人澄清“完全异步协议协议”中的第 3 步(见下文):
过程 P:初始值 xp。
- 步骤0:设置
r := 1
。 - 第 1 步:将消息发送
(1, r, xp)
到所有进程。 - 第 2 步:等到收到
N - t
, 类型(1, r, x)
的消息。如果多个N/2
消息具有相同的值v
,则将消息发送(2, r, v, D)
到所有进程。否则将消息发送(2, r, ?)
到所有进程。 - 第 3 步:等待
N - t
类型的消息(2, r)
到达。- (a) 如果有一个 D 消息
(2, r, v, D)
,则设置xp := v
。 - (b) 如果有多个
t
D 消息,则决定v
。 - (c) 其他集合
xp = 1
或0
每个集合的概率为 1/2。
- (a) 如果有一个 D 消息
- 第 4 步:设置
r := r + 1
并转到第 1 步。
我对这个协议的理解如下。
在第一步中,每个节点都会通知其他每个节点其状态。
在第二步,每个节点决定它是否“看到”了足够的信息来确定值,换句话说,它等待多数。如果多数具有相同的值,它会开始广播此信息,例如“我看到多数认为v
”。否则,它会发送消息,表明它没有下定决心。
最后,在第三步中,我们检查是否有多个t
“决定性”消息(如果t
节点的消息无法传递,则至少会有一个“决定性”消息)。但我不明白为什么我们xp := v
只在收到一条D 消息时才设置。接收两个 D 消息属于 3c,在这种情况下,我们将为 v 分配随机值。为什么?
为什么我们不能像这样描述第三步:
- (a) 如果 D 消息为零,则以 1/2 的概率设置
xp = 1
或0
每个。 - (b) 如果有多个
t
D 消息,则决定v
。 - (c) 其他设置
xp := v
。
angularjs - Node.js 的共识算法
我正在尝试实现一个协作画布,许多人可以在其中自由绘制或使用特定的形状工具。服务器是在 Node.js 中开发的,客户端是使用 Angular1-js 开发的(我对它们都很陌生)。我必须使用共识算法来向所有用户显示始终相同的内容。
由于找不到合适的使用教程,因此我遇到了严重的麻烦。我一直在寻找和研究 Paxos 的实现,但似乎 Raft 非常实用。
有什么建议么?我真的很感激。
distributed-system - 如何在paxos中导出序列号
在 paxos 中,每个提议者都独立地为其提议生成一个序列号。因此,假设提议者继续生成更高编号的序列号。这个提议者不会因为他生成更高的序列号而使其他提议者的提议无效吗?即在paxos 中是否存在一个提议者总是占主导地位的可能性?
distributed-system - 筏日志条目中的操作是否应该是幂等的?
在 raft 中,当一个节点重新启动时,它会尝试重做所有日志条目以赶上状态。但是如果节点在恢复阶段再次宕机,节点会执行两次操作。如果操作不是幂等的,这两次重做操作将违反状态机。
根据上面的描述,我的问题是,在实践中使用 raft 的系统中是否需要使 ops 幂等?
mysql - 为什么在mysql group replication跳转prepare阶段paxos?
我在提议者任务(xcom_base.c)中看到了这样的代码段
这threepahse
是int const threephase = 0
和force_delivery == 0
这里
push_msg_eq
正常的paxos是否包括准备、接受和学习阶段
但是 push_msg_2p 将跳过准备阶段并直接发送接受请求
我想知道为什么,非常感谢。
apache-zookeeper - 为什么写入请求必须进行领导者选举,而读取请求则不需要?
在可靠的分布式系统中,领导者选举对于写入成功是强制性的,我可以理解它必须遵循 Paxos 算法。
但是,为什么读取请求不需要领导者选举(因此是共识)?(例如在 Zookeeper 中)
我错过了什么吗?
paxos - Paxos:如何选择提议者、接受者和学习者?
我想从许多相同的流程中选出一个领导者。Paxos 的所有解释都说有些进程是 Proposers,有些是 Voter,有些是 Accepters。当我启动它们时,我是否需要将这些角色分配给我的进程?
如果我所有的提议者都死了怎么办?我可以将现有的学习者/投票者切换为提议者吗?
我的想法是,所有进程都作为选民出现,然后随机超时等待消息。如果他们在超时到期之前没有收到任何消息,他们将扮演提议者的角色。如果他们收到一条消息,他们会再次超时,然后如果他们在超时结束(或他们达成协议)之前没有收到任何消息,他们可以再次成为提议者。
这是一种有效的方法吗?
google-cloud-platform - 扳手论文中的单paxos状态机和多paxos状态机有什么区别
从扳手文件中,它说
“为了支持复制,每个 spanserver 在每个 tablet 上实现一个 Paxos 状态机。(早期的 Spanner 化身支持每个 tablet 多个 Paxos 状态机,这允许更灵活的复制配置。该设计的复杂性导致我们放弃它.)”
那么任何人都可以解释单个paxos状态机的含义吗?多台paxos stathe机器是什么意思?
我猜每个tablet的多个Paxos状态机是在单个tablet中有多个独立的单个Paxos状态机,那么单个tablet中的leader和follower可以并行复制数据,因为这些单个paxos状态机是独立的。
这样对吗?如果我误解了什么,请纠正我。谢谢你。
blockchain - 区块链可以遵循paxos共识吗
Paxos 是一种容错分布式共识算法。是否有任何遵循 paxos 算法的区块链框架来向区块链添加块。