对于大学作业,我正在使用套接字* 构建网络 Java 应用程序。我的架构必须是可扩展的,所以我希望有多个服务器可供我的客户与之通信。
我的问题是,客户端如何知道所有可用的服务器?我的第一个想法是让客户端保留一个(硬编码的)服务器 IP 地址列表并从列表中进行选择。在这种情况下,最佳做法是什么?
*我们不能使用 RMI。
对于大学作业,我正在使用套接字* 构建网络 Java 应用程序。我的架构必须是可扩展的,所以我希望有多个服务器可供我的客户与之通信。
我的问题是,客户端如何知道所有可用的服务器?我的第一个想法是让客户端保留一个(硬编码的)服务器 IP 地址列表并从列表中进行选择。在这种情况下,最佳做法是什么?
*我们不能使用 RMI。
假设您的网络提供商的成本太高,您决定更换。繁荣去你的IP地址。我建议明智地使用 DNS,尤其是循环 DNS。
使用中央跟踪器似乎是个好主意,但它本身必须是可扩展的,类似于 Google App Engine,否则它将成为一个瓶颈。
只需为给定名称创建多个 A 记录,您的客户将在解析时随机选择一个。
如果您无法使用 DNS,IP 列表可能会有所帮助——只需进行一次更改。所有服务器都循环更新列表的副本,如果无法访问服务器,则尝试另一个服务器,直到建立连接(并且列表同样更新)。当发现列表与现有列表不同时,更新客户端列表。
您可以使用 RMI 的东西,制作主服务器和辅助服务器。
辅助服务器可能会不断地轮询主服务器,当主服务器宕机时,辅助服务器可以在命名服务上注册以接管。当主要回来时,它会注册回来,使次要下降......就像那样。
关于客户端了解服务器,客户端可以使用 RMI 向服务器询问身份。