【发布时间】:2016-01-07 02:54:51
【问题描述】:
我正在经历基本 Paxos 算法可以与最终结果达成一致的各种场景。有一种情况我无法解释结果。
有两个提议的 P1 P2,三个受体 A1 A2 A3。 P1 会提出价值 u,P2 会提出价值 v。
1. P1(send id n) 完成prepare步骤,从A1 A2 A3接收所有promise,然后在A1 A2 A3中全部存储n为id。
2. P2(send id n+1) then A1 A2 A3 store n+1 as id
3. P2 下降。
4. P1 向 A1 A2 A3 发送带有 (n, u) 的接受请求,当然 A1 A2 A3 会拒绝该请求,不幸的是同时 P2 已经宕机了。
这样的提议者失败案例,我们下一步该怎么做?又一轮新的 Paxos?
【问题讨论】:
-
你能在这里提供一些上下文吗?如果 quorum(A1,A2,A3) 已经接受了 P2 提出的值,为什么还需要 P2 在线?
-
A1, A2, A3 只需在准备阶段向 P2 回复 OK 并将 id 存储在本地存储中。在 P2 发送值为 v 的接受请求之前,P2 已关闭。这意味着该值尚未由 (A1, A2, A3) 决定,因为未到达 v。但是 P1(id is n) 发送任何接受请求都会被 A1,A2,A3 丢弃,因为它的 id 小于 P2 的 id (n+1)。
标签: distributed-transactions distributed-system