【问题标题】:java multi server chat architecturejava多服务器聊天架构
【发布时间】:2011-08-13 02:45:01
【问题描述】:

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

我想使用 java NIO 库。

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

所以..我有几个问题:

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

提前致谢

【问题讨论】:

  • JBoss HornetQ JMS 消息代理是否是一个选项?在 Linux 上,他们为消息持久性提供 AIO,他们声称这非常快:community.jboss.org/wiki/HornetQFeatures - 使用发布/订阅通信模型,可以轻松实现聊天。并且可以集群化。

标签: java chat nio livechat multiserver


【解决方案1】:

如果没有性能测试,很难给出估算值;您可以支持的客户端数量因内存、处理器速度/负载、带宽/容量、延迟要求、存储要求而异...

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

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

编辑 如果您不依赖 NIO 来实现服务器到服务器,那么 pub/sub 模式下的 JMS 可能是一个不错的解决方案。

【讨论】:

    【解决方案2】:

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


    你可能想看看Apache MINA Project 的 NIO 框架。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 2015-07-22
      • 2017-07-06
      • 2014-01-22
      • 2021-07-23
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多