为了学习目的,我正在尝试制作一个Java集群。我将使用TCP进行节点间通信。我遇到的问题是,我不确定如何连接到节点。
这意味着,假设我有一个10节点集群:每个节点都必须连接到所有其他节点吗?如果没有,这是如何做到的?它有多可靠?
在我看来,与每个节点建立套接字连接的效率相当低。
有人能给我指明正确的道路吗?
发布于 2016-01-31 10:21:08
避免每个节点通过单播连接连接到所有其他节点。如果要这样做,所需连接的数量等于(n²-n)。
(n²-n)
您可以做的是多播通信,例如与阿帕奇部落。多播有其缺点,例如所有主机都必须位于同一个子网中(除非您想要处理TTL字段,我建议您避免这种情况)。
另一种选择是使用像RabbitMQ或ActiveMQ这样的消息代理。另见JMS。在这种情况下,每个节点与message建立常规的单播连接,并将其读写到消息队列。在这种情况下,节点可能位于不同的子网中。我建议仔细研究一下这一选择。
https://stackoverflow.com/questions/35111395
相似问题