Skip to content

模型Model

可靠广播

施工中 · 内容逐步修订

Reliable broadcast

保证有效性、一致性和完整性的广播抽象。

形式陈述 ​

固定消息传递系统中的发送者 s 和一次 one-shot 广播实例。实例身份必须区别于 payload:同样内容的两次合法广播不能被当作一次重传。接口为

rbBroadcast(m),rbDeliver(s,m).

在崩溃故障模型中,常用规格分别是:

  • 有效性:若正确发送者广播 m,则所有正确进程最终交付 (s,m);
  • 无重复:每个进程对该实例至多交付一次;
  • 无创造:若正确进程交付 (s,m),则 s 确实在该实例广播过 m;
  • 一致性:若某正确进程交付 (s,m),则所有正确进程最终交付 (s,m)。

uniform agreement 把前件扩展为“任何进程已交付”,因而也约束崩溃前的故障进程。Byzantine 模型则必须另外固定身份认证假设和有效性口径:恶意发送者可以向不同人发不同值,“发送者实际广播”不再是无歧义条件。

直觉

可靠广播把发送者可能中途崩溃导致的“只传到一部分”修补为正确进程之间的一致交付。有效性约束正确发送者的消息最终到达,完整性禁止伪造与重复,一致性保证若某正确进程交付则所有正确进程最终交付。它不决定多条消息的全局顺序,也不等同于共识。

例子与边界

在崩溃模型中,一种 eager 转发协议为每条消息保存唯一实例标识。首次收到消息时,节点安排向所有节点转发,并向本地应用交付;这里先只要求正确节点最终完成转发,不假定全部发送与交付是一个不可中断步骤。重复收到同一标识则忽略。若发送者 A 只把消息发给 B 就崩溃,而 B 正确,那么 B 最终完成转发,C、D 随后收到并交付。这证明的是“某个正确节点交付后,其他正确节点最终交付”的 non-uniform 一致性。

证明依赖正确转发者持续取步,且已发送给正确节点的消息最终送达;若只有公平丢包信道,则一次发送不够,要持续重传直到相应确认。不能一面允许永久丢失,一面仅靠单次转发推出最终交付。

Uniform 版本必须检查本地交付发生在何种证据之后。若 B 先交付,再只向 C 发出消息就崩溃,而 C 也在继续传播前崩溃,所有存活节点可能永远得不到消息,non-uniform 前件不成立,却已经违反 uniform agreement。若模型把“向所有人转发”拆成可中断的多步,必须完成足够的传播或取得协议规定的确认后才交付;不能在伪代码中把一条 send-to-all 默认为不会中断的原子广播。

发送者若可拜占庭式地向 B 发 x、向 C 发 y,简单转发加本地去重仍可能让两人各自交付先到的不同值。解决它需要 Byzantine reliable broadcast 的回声、阈值或认证机制。即使可靠广播保证共同消息集合,B 先交付 x,y、C 先交付 y,x 仍是允许的,排序由更强原语承担。

推论与应用

消息传递与崩溃模型下,可靠广播分离一致交付和最终性。它只保证正确进程最终交付同一消息集合,不保证两条消息的全序、因果序或任何日志前缀关系;不同副本收到相同集合却按不同顺序应用,仍可能得到不同状态。

原子广播在可靠广播之上加入共同全序,并可进一步映射到复制日志的 committed 序列。FIFO 或因果排序约束不同维度,不能从“可靠”一词推出;群通信协议必须按应用需要逐项叠加。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 7–8, broadcast primitives under failures。
  • Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chs. 3–5, reliable communication and broadcast specifications。
关系图谱10 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例

类型化关系