gpt4 book ai didi

java - 使用 Java 进行分布式计算。最好的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:00 27 4
gpt4 key购买 nike

我正在开发一个系统,可以用非常简单的术语描述如下:

  1. 有多台服务器,每台服务器都运行相同的 Java 应用程序(为了可扩展性)。
  2. 有一个公共(public)数据库服务器,每个应用程序服务器都与之通信。
  3. 数百万个客户端,每个客户端连接到一个随机服务器。每个客户端都有一个与一台服务器的开放套接字。

现在假设,客户端 A 连接到服务器 A,并想向客户端 B 发送消息。

解决此类问题的最佳方法是什么?跟踪哪个客户端连接到哪个服务器以及如何使服务器相互通信的最佳方式是什么。

这是一个特定于 Java 的问题。如果只有一台服务器,则可以通过线程间通信来完成。但问题是多台服务器。另外,是否有任何开源库可以简化此任务?

最佳答案

要么您的服务器需要能够查找客户端的位置(可能通过数据库,可能通过专用地址服务器),或者您需要通过使用散列方法或其他一些非随机分区来消除随机性,因为Kru 在评论中建议。 (无论哪种方式,如果服务器出现故障,您都会遇到问题,但这可能不在您的问题范围内)。

然后您的服务器需要能够将消息转发到适当的其他服务器。最简单的方法是让它们彼此保持套接字连接。

另一种方法是使用消息队列系统。您可能会考虑使用高性能无代理系统,例如 ZeroMQ ,它提供类似套接字的 API,但具有更高的吞吐量和容错能力,以及更丰富的消息传递模式。无论如何,更高级别的消息传递产品可能可以实现您描述的大部分系统(处理可扩展性、寻址等)。

您可以使用现有协议(protocol),例如 XMPP而不是发明您自己的分布式消息系统。

关于java - 使用 Java 进行分布式计算。最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com