2012-07-30 266 views
1

我有一个使用nio的java聊天应用程序它现在工作正常。我想用同一个portno将我的聊天服务器分成两部分。java中的服务器到服务器通信 - 负载均衡

简单:

  1. 我想我的单服务器分割成两个或三个。当客户端
    登录时,它首先连接到第一台服务器。
  2. 第一台服务器有10个客户端时,第11个客户端必须 连接到第二台服务器。和相同的机制第三 服务器
  3. 这三台服务器必须具有相同的端口号。
  4. 这些服务器必须具有内部通信。如果客户端1是 登录到服务器1。获取的任何细节服务器1应该是 已知的服务器2服务器3
  5. 在服务器1的客户端必须与客户这 在服务器2和服务器3

我怎样才能让这些可能是有与此相关的任何实例进行通信。我GOOGLE了它,但找不到任何合适的解决方案。

请指导我解决这些问题。

非常感谢。

+1

关于你的第四个需求,我想你需要一个共享数据库或类似的东西,这样所有的服务器都是同步的。 – Sikorski 2012-07-30 04:20:20

+0

@Sikorski你的意思是一个温室表,当客户端登录的细节将赖于该表。如果是这样的话,它将可用于所有服务器,并在客户端注销时被删除。如果在某个时间5k客户端登录到服务器,它可能需要很多时间(如果我错了,我会纠正)。 – Amith 2012-07-30 04:31:03

+0

这不是api问题,它是一个设计问题。任何时候,你都可以调查其他工具,比如用于配置管理的Apache ZooKeeper,或者利用Message Queue等。 – qrtt1 2012-07-30 05:21:49

回答

2

您可以使用负载平衡器根据服务器实例健康状况重定向请求,您可以按服务器健康参数公开服务器健康参数。服务器具有的连接。对于服务器间通信,我建议使用apache activemq和共享数据库也是个好主意