【问题标题】:Load balancer, sockets and java负载均衡器、套接字和 java
【发布时间】:2013-10-09 00:02:04
【问题描述】:

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

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

这是网络架构的示意图:

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

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

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

我的问题是:

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

或者负载均衡器有没有办法连接这两个端点(服务器 #1 客户端 #1),而无需向客户端发送信息?

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

【问题讨论】:

  • 此设计决定取决于您的要求。让平衡器路由消息和数据可能会使他成为瓶颈并阻碍可扩展性。
  • 我希望负载均衡器不充当代理,因此每个客户端都直接连接到特定服务器

标签: java sockets networking tcp load-balancing


【解决方案1】:

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

【讨论】:

  • 取决于应用程序...如果平衡器必须通过其网络堆栈路由大量数据,那么只提供一个地址可能更合适。
  • @KaushikSivakumar 所以你是说在负载均衡器决定使用哪个服务器之后,该服务器会连接到客户端(而不是客户端 -> 服务器)?
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 2020-04-17
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
相关资源
最近更新 更多