我正在尝试创建一个用于学习目的的Java集群。我将使用TCP进行节点间通信。我遇到的问题是我不确定如何连接到节点。
这意味着,假设我有一个10节点集群:每个节点都必须连接到所有其他节点吗?如果没有,这是怎么做到的?它有多可靠?
与每个节点建立套接字连接对我来说效率很低。
有人能告诉我正确的道路吗?
答案 0 :(得分:1)
避免每个节点使用单播连接连接到所有其他节点。如果你这样做,所需的连接数等于(n²-n)
。
您可以做的是多播通信,例如与Apache Tribes。 多播具有缺点,例如,所有主机必须在同一个子网中(除非你想弄乱TTL字段,我建议避免)。
另一种选择是使用RabbitMQ或ActiveMQ之类的消息代理。另见JMS。在这种情况下,每个节点与消息代理建立常规单播连接,并读取和写入消息队列。在这种情况下,节点可以位于不同的子网中。我建议仔细看看这个选项。