原子广播和原子多播有什么区别?

时间:2012-11-14 15:10:37

标签: distributed-computing terminology broadcast multicast

我不清楚为什么有些论文会使用一个或另一个术语。我认为它们是一回事:原子组播实际上可能是使用IP组播实现的原子广播(如环Paxos)。

2 个答案:

答案 0 :(得分:1)

在分布式系统理论中,它与使用IP多播或任何其他实现细节无关。实际上,大部分时间都是作者个人偏好的问题,你可以放心地认为它们的意思相同。

详细而言,要严格,当您说多播时,您假设并非所有进程都必须接收所有消息。当您说广播时,您假设所有消息都针对所有进程。模糊性产生如下:由于多播算法通常在成员资格管理之上分层,因此在视图上下文中对所有成员进行多播的抽象协议与广播到系统模型中的所有进程的抽象协议几乎没有区别。因此,您可以将其描述为多播或广播。这实际上取决于具体情况。

答案 1 :(得分:0)

术语 Atomic Broadcast单个中央实体更相关,通常称为 sequencer,它执行和发送一组完全有序的消息,通常称为事件流。它如何发送消息(广播、多播、单播、tcp 等)不是它的主要特征,或者至少它不应该是。除了@jop 所说的之外,在 TCP/IP 协议方面,UDP 广播和 UDP 多播之间存在很大的技术差异。例如:

  • 多播可以跨子网传播,广播不能
  • 多播通常需要 IGMP,广播不需要
  • 大多数内核旁路网卡会加速多播,但不会加速广播

这并不意味着永远不应该使用 UDP 广播。某些网络可能不支持多播,但会支持广播。理想情况下,消息传递系统将支持多种传输机制:

  • UDP 多播
  • UDP 单播
  • UDP 广播
  • TCP
  • 内存
  • 共享内存
  • 双 (TCP + UDP)

有关不依赖于任何特定传输机制的原子广播消息传递系统的示例,您可以检查 CoralSequencer

免责声明:我是 CoralSequencer 的开发人员之一。