为什么在Weblogic Clusters中使用Unicast与Multicast

问题描述 投票:20回答:5

从文档中不清楚为什么要在WebLogic群集中使用Unicast而不是Multicast。任何人都有使用任何一个和转移到Unicast的好处的经验?

weblogic
5个回答
16
投票

Unicast和Multicast之间的主要区别如下

Unicast:

假设您在群集中有三台服务器(MS-1,MS-2,MS-3)。如果他们必须彼此通信,那么他们必须ping(即心跳)群集主机以通知它们它们还活着。

如果MS-1是主设备,则MS-2和MS-3将ping发送到MS-1

Multicast:

在多播中,没有群集主服务器。相反,每个服务器必须相互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建议使用Unicast来减少网络拥塞:Oracle Docs: Communications In a Cluster


9
投票

Multicast背后的原理是所有订户都收到任何消息到Multicast地址。因此MS-1只需要发送1个网络数据包来提醒所有其他集群成员其状态。这意味着状态或JNDI更新每个群集仅需要1个数据包用于Muticast,每个服务器需要1个数据包(大约)用于单播。组播也不需要“主人”选举。因此,多播可以更简单地编码并创建更少的网络流量。

那么,Multicast很棒?不必要。它使用本质上不可靠和未确认的UDP数据报,因此,如果不可靠的承载协议 - Etherent - 您的消息可能永远不会出现(解释:您脱离群集)。 Multicast的整个概念基于订阅,它不是正常意义上的“可路由”协议,因此默认路由器必须丢弃多播数据包或冒网络风险。因此,所有集群成员驻留在同一网段上的历史要求。

如果您的群集跨越网络或者您丢失了太多的多播数据包,那么多播的这些缺点意味着单播是最佳选择。


6
投票

Unicast over Multicast的主要优点是易于配置。 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中引入的新协议,并且仍然存在一些小问题。


5
投票

这里的答案似乎与Oracle A-Team的建议相冲突。他们的建议是:

通常,A-Team的经验法则是始终建议客户使用多播,除非有充分的理由说明它不可能或不可行(例如,跨越多个子网,其中不允许路由器传播UDP多播消息)。造成这种情况的主要原因仅仅是资源短缺的效率和弹性。

完整的文章可以找到here

UPDATE

Weblogic默认为单播,12c的文档意味着仅支持多播以确保向后兼容性:

请务必注意,尽管WebLogic Server文档的某些部分表明仅支持多播以实现向后兼容性,但这是不正确的。 Oracle完全支持多播群集消息传递协议。 A-team正在使用WebLogic Server产品管理来解决Weblogic Server 12c文档中的这些文档问题。


1
投票

多播和单播配置都具有群集主服务器。除了集群主服务器之外,单播还有一个或多个领导者。群集负责人可能是也可能不是群集主服务器。

组播是一种广播;他们不会像tcp消息那样互相ping通。在单播和多播的情况下,流量通常是微不足道的。但是,如果您的网络支持,多播几乎总是最佳选择。

Unicast提供比多播更简单的配置,因为您不需要多播支持。所有路由器/交换机都支持TCP,但并非所有路由器/交换机都支持或启用了多播。但是,单播比多播产生更多的网络流量。

© www.soinside.com 2019 - 2024. All rights reserved.