只有一个客户端必须解决和端口:它是否在播出方面与单播有所不同?

场景:

我正在实现一个networking节点的故障转移,所以我的想法是使主节点侦听广播 IP地址和端口。 如果主节点发生故障,另一个故障转移节点将开始监听该广播地址(和端口)并接pipe。

题:

我担心的是,我将使用一个广播IP地址只为一个节点:主人。 故障转移节点只会在主控失败时绑定,换句话说,几乎不会。

在networking/stream量开销方面,通过广播地址与单个节点通话还是不好的,或者networking以某种方式足够聪明,以知道没有其他人正在监听这个广播地址,并且将其视为单播高架?

我担心的是我会用这个广播地址的数据包淹没我的networking,甚至认为我只是在和一个节点(主节点)交谈。 但是我不能使用单播,因为故障转移节点必须能够快速,透明地获取主stream,以防万一发生故障。

这听起来像你正试图以你自己的方式重新创build网卡绑定/集群。 大多数主动/被动群集将共享虚拟IP和MAC地址,当一个单元发生故障时,辅助接pipe共享的MAC地址。 使用广播IP与集群进行通信是非正统的,并且几乎肯定会在整个局域网中产生不必要的stream量。

networking通常不可能提前预测,或者立即意识到节点的故障。

因此,您必须:

  • 接受它将总是需要一点时间来检测故障并转移到故障转移节点
  • 抢先发送stream量到备份节点,损失networking效率

在networking层面上可靠的消息传递是困难的并且实施成本高。 这就是为什么我们使用哑分组交换networking并在传输层面实现可靠性的原因。 这是您使用浮动IP(可能是MAC)地址,并等待(网关ARPcaching/交换机转发表)更新的情况。

但是,如果你决不会错过任何一个数据包是至关重要的,你将不得不付出一定的代价。 如果您使用多播 (而不是广播)地址,并且您的冗余path经过能够进行IGMP侦听的槽交换机,那么它们应该足够聪明,至less不会淹没整个局域网。 您仍然需要一种方法让备份节点可靠地检测到主服务器的故障。

如果使用stream,而不是在多播udp之上使用自己的临时可靠协议,则可能需要考虑SCTP,因为它处理多宿主,并可能有利于替代udp或tcp。

是的,广播有开销。 您连接到交换机的节点越多,拥有的开销就越多。 所以当你真正想要到达所有的节点和/或当你试图发现一个移动到其他地方的节点时,你应该只发送广播。 广播一次,等待来自任何地方的节点的回复,发现它的新地址,并从现在开始单播。 美丽,不是吗? 🙂

无论您是否淹没您的networking,完全取决于广播的频率和大小,广播的子网的大小,networking拓扑以及设备function。

不知道没有人可以肯定地回答你的问题。

但是,DHCP是广播stream量,在大型networking中可以相当健谈。 许多networking不会采取任何特殊的行动来pipe理这个DHCPstream量 – 这个影响不是问题。 估计你的广播是否将比现有的DHCP广播stream量大得多 – 如果是的话,那么你可能需要担心和实施一个不同的解决scheme,以解决你遇到的任何问题。 如果没有,那么很有可能你可以继续下一个挑战。

我很感兴趣,特别是你正在尝试设置故障转移。 正如其他受访者所build议的那样,有很多select可以用在你不用担心的地方,也可以挖掘其他人的经验。