【问题标题】:Client-Server architecture with multiple servers具有多个服务器的客户端-服务器架构
【发布时间】:2012-02-09 02:04:58
【问题描述】:
我正在开发一个应用程序,其中有两个多线程服务器(Server1 和 Server2)。我将这两个服务器中的数据保存在地图中。我想做的是在这与服务器之间进行负载平衡(两台服务器上的数据量相同)。所以我有两个问题:
1) 如何将客户端随机连接到服务器?例如,当我启动一个客户端时,这个客户端连接到 Server1,当我启动另一个客户端时,这个客户端连接到 Server2。
2) 我可以使用什么技术在服务器中进行负载平衡?
最好的问候。
【问题讨论】:
标签:
java
client-server
java-io
【解决方案1】:
在两台服务器之间分配负载的非常简单的解决方案是使用Round-robin DNS。这里的基本思想是所有 DNS 请求(由您的客户端)不仅会解析为单个 IP 地址,而且会解析为它们的 list(在您的情况下为两个)。这反过来意味着他们将有效地连接到任一服务器。
这样做的简单性(和缺点)是每个 IP 地址返回的概率不是100 / n(其中n 是列表中的地址数)。我只是想强调,它不一定是 50%(在两个的情况下)。
现在如果您想要真正的负载平衡,您可以查看您将放在Server1 和Server2 前面的负载平衡设备。这样的事情会更可靠,但您的成本/复杂性也会增加。
对于最简单的解决方案,我会研究循环 DNS。