从文档中不清楚为什么要在WebLogic群集中使用Unicast而不是Multicast。任何人都有使用移动到Unicast的好处和经验的经验吗?
答案 0 :(得分:16)
单播和多播之间的主要区别如下
假设群集中有三台服务器(MS-1,MS-2,MS-3)。如果他们必须彼此通信,那么他们必须ping(即心跳)群集主机以通知它们它们还活着。
如果MS-1是主设备,那么MS-2和MS-3会将ping发送到MS-1
在多播中,没有群集主服务器。相反,每个服务器必须相互ping通,以通知每个人他们还活着。
所以MS-1会将ping发送到MS-2& MS-3并且同时MS-2将ping发送到MS-1& MS-3和MS-3将ping MS-1& MS-3。
因此,在多播中,发送了更多的ping,这使得与单播相比,发送ping的拥塞更加繁重。因此,WLS建议使用单播来减少网络拥塞:Oracle Docs: Communications In a Cluster
答案 1 :(得分:9)
Multicast背后的原理是所有订户都收到任何消息到多播地址。因此MS-1只需要发送1个网络数据包来提醒所有其他集群成员其状态。这意味着状态或JNDI更新每个群集仅需要1个数据包用于Muticast,每个服务器需要1个数据包(大约)用于单播。组播也不需要“主人”选举。因此,多播可以简化代码并减少网络流量。
那么,Multicast很棒吗?不必要。它使用本质上不可靠和未确认的UDP数据报,因此,如果不可靠的承载协议 - Etherent - 您的消息可能永远不会出现(解释:您脱离群集)。 Multicast的整个概念基于订阅,它不是正常意义上的“可路由”协议,因此默认路由器必须丢弃多播数据包或冒网络风险。因此,所有集群成员驻留在同一网段上的历史要求。
多播的这些缺点意味着如果您的群集跨越网络或者您丢失了太多的多播数据包,那么单播是最佳选择。
答案 2 :(得分:6)
单播多播的主要优点是易于配置。 Unicast使用TCP通信,这通常不需要额外的网络配置。多播使用UDP通信和Multicast addresses,这可能需要一些网络配置,并且需要额外的努力来选择要使用的地址。
Oracle A-Team发表了一篇很好的文章,深入解释:WebLogic Server Cluster Messaging Protocols。
在WLS 12.1.2的文档中,Oracle添加了Considerations for Choosing Unicast or Multicast,其中建议在具有10个以上受管服务器的群集中使用多播。
根据我的个人经验,我发现Unicast可能会在大型集群中出现一些问题,主要是因为它是WLS 10.0中引入的新协议,并且仍然存在一些小问题。
答案 3 :(得分:5)
这里的答案似乎与Oracle A-Team的建议相冲突。他们的建议是:
一般来说,A-Team的经验法则是始终建议客户使用多播,除非有充分的理由说明它不可能或不实用(例如,跨越多个子网,不允许路由器传播UDP多播消息) 。主要原因是资源短缺的效率和弹性。
可以找到完整的文章here。
Weblogic默认为单播,12c的文档表示仅支持多播以确保向后兼容性:
值得注意的是,虽然部分WebLogic Server文档表明仅支持多播以实现向后兼容性,但这是不正确的。 Oracle完全支持多播群集消息传递协议。 A团队正在使用WebLogic Server产品管理来解决Weblogic Server 12c文档中的这些文档问题。
答案 4 :(得分:1)
多播和单播配置都具有群集主服务器。除了集群主服务器之外,单播还有一个或多个领导者。集群领导者可能是也可能不是集群主机。
组播是广播;他们不会像tcp消息那样互相ping通。在单播和多播的情况下,流量通常是微不足道的。但是,如果您的网络支持,多播几乎总是最佳选择。
单播提供比多播更简单的配置,因为您不需要多播支持。所有路由器/交换机都支持TCP,但并非所有路由器/交换机都支持或启用了多播。但是,单播比多播产生更多的网络流量。