通信如何工作

Geode使用TCP和UDP单播(unicast)和多播(multicast)的组合来进行成员之间的通信。 您可以更改默认行为以优化系统通信。

Client/server通信和gateway sender与gateway receiver通信均使用TCP/IP sockets。 服务器在已发布地址上和客户端建立的连接侦听客户端通信,发送其位置。 类似地,gateway receiver侦听gateway sender通信和在站点之间建立的连接。

在对等系统中,对于一般消息传递和Region操作分发,Geode使用TCP或UDP单播(unicast)。 默认值为TCP。 您可以对所有通信使用TCP或UDP单播(unicast),也可以将其用作默认通信,但可以将特定Region作为目标,以使用UDP多播(multicast)进行操作分发。 部署的最佳组合在很大程度上取决于您的数据使用和事件消息传递。

TCP

TCP(Transmission Control Protocol)提供系统消息的可靠有序传送。 如果数据是分区(partitioned)的,如果分布式系统很小,或者网络负载是不可预测的,则TCP比UDP更合适。 在较小的分布式系统中,TCP优于UDP单播(unicast),因为它在操作系统级别实现了比UDP更可靠的通信,并且其性能可以比UDP快得多。 然而,随着分布式系统的大小增加,UDP的相对较小的开销使其成为更好的选择。 TCP为每个成员添加了新的线程和sockets,随着系统的增长导致更多的开销。

注意: 即使Geode配置为使用UDP进行消息传递,Geode在尝试检测失败的成员时也会使用TCP连接。更多信息,请参阅 故障检测和成员视图 。 此外,TCP连接的ping不用于KeepAlive; 它仅用于检测失败的成员。TCP的保持活动的配置, 请参阅TCP/IP KeepAlive配置

UDP单播(unicast)和多播(multicast)

UDP (User Datagram Protocol) 是一种无连接协议,它使用的资源远少于TCP。 向分布式系统添加另一个UDP消息传递进程的开销很小。 然而,UDP本身并不可靠,并且消息的大小限制为64k字节或更少,包括消息头的开销。 大型消息必须分段并作为多个数据消息传输。 因此,在许多情况下UDP比TCP慢,而在其他情况下如果网络流量不可预测或严重拥塞则不可用。

UDP在Geode中用于单播(unicast)和多播(multicast)消息传递。 Geode实现重传协议(retransmission protocols)以确保通过UDP正确传递消息。

UDP 单播(unicast)

UDP 单播(unicast)是TCP的替代方案,用于一般消息传递。 当分布式系统中存在大量进程,网络不拥塞,缓存对象很小,并且应用可以为缓存提供足够的处理时间来从网络读取时,UDP比TCP更适合单播(unicast)消息传递。 如果禁用TCP,Geode将使用UDP进行单播(unicast)消息传递。

对于每个成员,Geode为UDP单播通信选择一个唯一的端口。 您可以通过在gemfire.properties文件中设置membership-port-range来限制用于选择的范围。 例:

membership-port-range=1024-60000

注意: 除UDP端口配置外,membership-port-range属性还定义了用于故障检测的TCP端口。Geode属性的详细说明, 请参阅 参考手册

UDP多播(multicast)

常规消息传递和默认Region操作消息传递的选项是TCP和UDP单播(unicast)。您也可以选择使用UDP多播(multicast)替换默认值,以用于部分或全部Region的操作分发。对于要使用多播(multicast)的每个Region,您可以Region本身上设置其他属性。

为Region启用多播(multicast)时,分布式系统中的所有进程都将接收该Region的所有事件。每个成员都会收到该Region的每条消息,并且必须将其解压缩,编排处理流程,然后进行处理,所有这些都在发现它是否对消息感兴趣之前。因此,多播(multicast)适用于分布式系统中普遍感兴趣的Region,其中大多数或所有成员具有已定义该Region并且有兴趣接收该Region的大多数或所有消息。多播(multicast)不应该用于分布式系统中一般不太感兴趣的Region。

当分布式系统中的大多数进程使用相同的缓存Region并且需要为它们获取更新时,例如当进程定义replicated region或将其Region配置为接收所有事件时,多播(multicast)是最合适的。

即使您对Region使用多播(multicast),Geode也会在适当时发送单播(unicast)消息。如果数据被分区(partitioned),则多播(multicast)不是一个有用的选项。即使启用了多播(multicast),partitioned regions仍然使用单播(unicast)用于几乎所有目的。

results matching ""

    No results matching ""