java中的服务器到服务器通信-负载平衡

java中的服务器到服务器通信-负载平衡,java,chat,Java,Chat,我有一个使用nio的java聊天应用程序,现在运行良好。我想用相同的端口号将我的聊天服务器拆分为2个 简单地说: 我想把一台服务器分成两台或三台。当客户端 登录时,它首先连接到第一台服务器 当第一台服务器有10个客户端时,第11个客户端必须 已连接到第二台服务器。对于第三种情况也有相同的机制 服务器 这三台服务器必须具有相同的端口号 这些服务器必须具有内部通信。如果客户端1是 已登录到服务器1。服务器1中获得的任何详细信息都应 已知于服务器2和服务器3 服务器1中的客户端必须与 位于服务器2和服

我有一个使用nio的java聊天应用程序,现在运行良好。我想用相同的端口号将我的聊天服务器拆分为2个

简单地说:

  • 我想把一台服务器分成两台或三台。当客户端
    登录时,它首先连接到第一台服务器
  • 当第一台服务器有10个客户端时,第11个客户端必须 已连接到第二台服务器。对于第三种情况也有相同的机制 服务器
  • 这三台服务器必须具有相同的端口号
  • 这些服务器必须具有内部通信。如果客户端1是 已登录到服务器1。服务器1中获得的任何详细信息都应 已知于服务器2和服务器3
  • 服务器1中的客户端必须与 位于服务器2和服务器3中
  • 我怎样才能使这些成为可能?是否有任何与此相关的示例。我在谷歌上搜索了一下,但找不到任何合适的解决方案

    请引导我解决这些问题


    非常感谢。

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

    关于您的第四个要求,我认为您需要一个共享数据库或类似的东西,以便所有服务器都同步。@Sikorski您指的是一个临时表,当客户端登录时,详细信息将写入该表。如果是这样,它将可用于所有服务器,并将在客户端注销时被删除。如果一次有5k个客户端登录到服务器,可能需要很多时间(如果我错了,请纠正我)。这不是api问题,而是设计问题。无论如何,您可以调查其他工具,例如用于配置管理的Apache ZooKeeper或利用消息队列等@Amith不是一个临时表,但它应该是一种用于维护用户详细信息的表(我希望您正在这样做),然后维护一个会话id或类似的东西,这样每当用户访问任何服务器时,服务器都可以从数据库中检查用户是否已经登录。