【发布时间】:2013-10-09 00:02:04
【问题描述】:
我有一个项目要处理,我需要构建一些客户端-服务器应用程序,我可以在其中使用 Java 发送消息等。该项目的目标之一是处理故障转移。当客户端连接到服务器并且服务器死机时,它会自动连接到备份服务器。我想要做的不是必需的,但我想实现一个负载平衡器,以便多个客户端连接到首选服务器。
客户端和服务器之间的连接必须使用 TCP 套接字。
这是网络架构的示意图:
客户端连接到负载均衡器(udp 或 tcp,我不知道 最适合这种情况)。
负载平衡器决定该客户端应该连接哪个服务器(最空的一个)
客户端与指定服务器建立 TCP 连接
我的问题是:
负载平衡器应如何工作以使客户端连接到特定服务器?将服务器的信息(ip,端口)发送给客户端,客户端使用新的 ip 创建另一个套接字? (蓝线)。
或者负载均衡器有没有办法连接这两个端点(服务器 #1 客户端 #1),而无需向客户端发送信息?
PS:我问你是因为每个客户端似乎没有必要创建 2 个套接字来连接到服务器(第一个套接字黑线,第二个套接字蓝线)
【问题讨论】:
-
此设计决定取决于您的要求。让平衡器路由消息和数据可能会使他成为瓶颈并阻碍可扩展性。
-
我希望负载均衡器不充当代理,因此每个客户端都直接连接到特定服务器
标签: java sockets networking tcp load-balancing