我打算使用Ganglia进行集群监控,并从 O'Reilly 关于 Ganglia 的书中向我们的管理层展示了以下图片:
他们在这张图片中看到了“Multicast”,并表示出于性能原因,它是集群的“Big No”。我的印象完全相反——组播协议比单播更易于配置,更经济有效。
任何重要的原因,为什么集群设计者应该害怕组播?
我打算使用Ganglia进行集群监控,并从 O'Reilly 关于 Ganglia 的书中向我们的管理层展示了以下图片:
他们在这张图片中看到了“Multicast”,并表示出于性能原因,它是集群的“Big No”。我的印象完全相反——组播协议比单播更易于配置,更经济有效。
任何重要的原因,为什么集群设计者应该害怕组播?
多播的主要潜在“陷阱”是许多网络交换机没有实现IGMPv3(或IPv6 的MLDv2),而是将每个多播数据包广播到 LAN 上的每个设备,并依赖每个设备的 IP 堆栈来实现在本地过滤掉任何不相关的传入多播数据包。这在技术上是可行的(并使交换机的实现保持简单),但这确实意味着 LAN 上的任何慢速(ish)设备如果不得不花费大量的网络带宽和/或 CPU 时间来检查和抛出问题,则可能会遇到性能问题离开许多他们从未要求过的多播数据包。
另一方面,多播(或广播)实际上是执行诸如自动发现 LAN 上的设备之类的要求,因为除非您已经知道该设备的 IP 地址,否则您不能使用单播通信与另一台设备进行通信。
那么,我的建议是使用多播来进行发现、心跳和其他低带宽流量,但如果您打算做一些高带宽的事情(例如视频流或批量数据传输),要么计划能够回退到单播,或者确保您的交换机实施 IGMPv3/MLDv2,并且不要到处发送垃圾多播数据包。
最后一点:WiFi在多播方面确实很糟糕——由于 WiFi 上多播的不幸方式,即使是少量的多播流量也会使 WiFi 路由器瘫痪。因此,如果您打算使用多播,您可能希望将任何 WiFi 路由器完全远离 LAN,或者至少确保您可以将它们设置为过滤掉多播数据包,而不是尝试将它们转发到他们的WiFi 客户端。