java - 负载均衡器、套接字和 Java

标签 java sockets networking tcp load-balancing

我有一个项目要处理,我需要用 Java 构建一些客户端-服务器应用程序,我可以在其中发送消息和其他内容。该项目的目标之一是处理故障转移。当客户端连接到服务器并且服务器挂掉时,它会自动连接到备份服务器。我想做的不是必需的,但我想实现一个负载平衡器,以便多个客户端连接到首选服务器。

客户端和服务器之间的连接必须使用 TCP 套接字。

这是网络架构的示意图: enter image description here

  1. 客户端连接到负载均衡器(udp 或 tcp,我不知道 这种情况下的最佳选择)。

  2. 负载均衡器决定客户端应该连接哪个服务器(最空的那个)

  3. 客户端与指定服务器建立TCP连接

我的问题是:

负载均衡器应该如何工作才能让客户端连接到特定服务器?将服务器的信息(ip,端口)发送给客户端,客户端用新的 ip 创建另一个套接字? (蓝线)。

或者是否有一种方法可以让负载平衡器连接这两个端点(服务器 #1 <-> 客户端 #1),而不必向客户端发送信息?

PS:我问你是因为似乎没有必要让每个客户端都必须创建 2 个套接字来连接到服务器(第一个套接字黑线,第二个套接字蓝线)

最佳答案

我认为在客户端将信息发送到负载均衡器之后,最好是负载均衡器将该信息发送到它决定的服务器,而不是将某些信息发回给客户端,然后客户端再次连接到服务器

关于java - 负载均衡器、套接字和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139709/

相关文章:

java - java中如何使用BufferedWriter进行socket通信?

sockets - 列表中的双向套接字

java - 连接网络中的两个客户端

Java:单独的时间数字

java - ClassPathXmlApplicationContext 读取 JAR 外部的文件

java - 如何在Spring Controller 中访问applicationContext.xml?

java - 使用Javassist修改代码生成java.lang.VerifyError : Expecting to find integer on stack

c - UNIX 风格的套接字编程技巧

linux - 在 docker 中使用覆盖层使用多主机网络功能需要 swarm

java - 如何检索现有 Jboss RHQ 服务器上的 SNMP 配置?