java - 在 Java 中使用多个服务器

标签 java sockets networking scalable

对于一项大学作业,我正在使用套接字* 构建一个网络 Java 应用程序。我的架构必须是可扩展的,因此我希望有多个服务器可供我的客户进行通信。

我的问题是,客户端如何知道所有可用的服务器?我的第一个想法是让客户端保留服务器 IP 地址的(硬编码)列表并从列表中进行选择。在这种情况下,最佳实践是什么?

*我们不能使用 RMI。

最佳答案

假设您的网络提供商的成本太高,您决定更换。繁荣你的IP地址。我建议明智地使用 DNS,尤其是循环 DNS。

使用中央跟踪器似乎是个好主意,但它本身必须是可扩展的,类似于 Google App Engine,否则它将成为一个瓶颈。

只需为给定名称创建多个 A 记录,您的客户就会在解析时随机选择一个记录。

如果您无法使用 DNS,IP 列表可能会有所帮助 - 只需进行一次更改即可。所有服务器都会循环更新列表的副本,如果无法到达某个服务器,则会尝试另一个服务器,直到建立连接(列表也会同样更新)。当发现该列表与现有列表不同时,就会更新客户的列表。

关于java - 在 Java 中使用多个服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19350701/

相关文章:

java - 在 wicket 中自定义 IndicatingAjaxLink

java - 如何在 SQL 中动态创建 UPDATE 查询,其中每次调用的列都不同?

java - Maven错误: diamond operator is not supported in -source 1. 6

java - 如何检查套接字的输出流是否关闭?

java - 将值返回给java中的main方法

c - 尝试在 C 中发送数据包时 TCP 校验和不正确

c++ - 连接到由 Boost.Asio 创建的域套接字时权限被拒绝

Java Instant Messenger 问题

swift - 在 Swift 中解码 SimplePing 响应数据包

c++ - 我们什么时候应该选择其他IPC而不是直接内存访问来进行线程间通信