Skip to content

因果广播

Causal broadcast

保证所有进程按因果先后顺序交付消息的广播抽象。

形式陈述

因果广播在可靠广播基础上要求:若消息 m 的广播事件 happens-before 消息 m 的广播事件,则任何同时交付二者的正确进程都先交付 m。并发消息的交付顺序可以不同。实现可携带向量时钟并缓冲尚未满足因果前置的消息;可靠性、完整性和故障假设仍需单独声明。

直觉

回复必须在原消息之后出现,但彼此无因果关系的两条消息没有必要强行排成同一全序。

例子与边界

进程 A 广播“提交”,B 收到后广播“确认”,所有进程都应先交付提交再交付确认。若 C 和 D 同时广播独立更新,不同接收者可按不同顺序交付。因果广播弱于原子广播,因为后者还统一并发消息顺序。

推论与应用

因果广播用于协作编辑、因果一致存储、事件复制和调试分布式因果链。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。
  • Leslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System,” Communications of the ACM 21(7), 1978,Full paper。