2

我目前正处于开始使用多台服务器(机器)开发聊天(实际上是移植旧的单服务器版本)的阶段。

我想使用 java NIO 库。

我这样做的原因是,当连接大量客户端(大约 10k)时,当前实现工作非常缓慢,而且当前实现基于 IO 套接字库。我还估计在 1 年内会有大约 40-50k 的现场客户。

所以..我有几个问题:

  1. 你认为/估计 NIO 可以处理多少个客户端,因为我听说比旧的套接字实现要好得多?
  2. 您有什么想法吗,或者您可以向我指出一些已经实现的使用多服务器聊天的架构。
  3. 使用多服务器架构时,我可能面临的主要问题是什么?

提前致谢

4

2 回答 2

3

从 NIO 库的角度来看,我认为没有任何限制。最终性能取决于您的服务器和网络配置。


您可能想看看NIO 框架的Apache MINA 项目

Apache MINA 是一个网络应用框架,帮助用户轻松开发高性能和高扩展性的网络应用。它通过Java NIO 在TCP/IP 和UDP/IP 等各种传输上提供一个抽象的·事件驱动·异步API。

Apache MINA 通常被称为:
. NIO 框架·库,
. 客户端·服务器框架·库,或
。一个网络·套接字库。

于 2011-04-26T14:55:48.240 回答
2

没有性能测试就很难给出估计;您可以支持的客户端数量取决于内存、处理器速度/负载、带宽/容量、延迟要求、存储要求……

您可以使用几种方法在服务器之间共享数据;我会在它们之间使用广播/多播 UDP,因为它是最具可扩展性的方法。

您可能面临的最大问题是应对服务器中断以及正确处理负载平衡。

编辑 如果您没有绑定到服务器到服务器的 NIO,那么 pub/sub 模式下的 JMS 可能是一个很好的解决方案。

于 2011-04-26T15:11:28.360 回答