1

我目前正在研究建立一个拥有超过 1 万在线用户的聊天系统。我遇到了一些技术和方法,例如 jabber(XMPP)、websockets、长轮询、推送。就我现在而言,考虑到用户数量,长轮询可能不起作用。我知道有很多方法可以做到这一点。我也知道 facebook 和 Google 聊天系统是在 XMPP 上开发的。

如果有人能指出我正确的方向,我将不胜感激。我相信所有这些方法和技术都很好,具体取决于项目的规模。我绝对需要性能和可扩展性。

4

2 回答 2

2

我已经将Socket.io和NodeJS一起用于这样的聊天应用程序。它在中等服务器上扩展到超过 10,000 个并发用户,并且有很大的增长空间。

这确实取决于您的限制。

  • 您打算使用哪种硬件?
  • 哪种操作系统将为您的服务器提供动力?
  • 您针对哪些客户平台?
  • 您是否有需要适应的现有基础架构?
  • 你有以前选择的编程语言吗?
  • 您的团队成员拥有的现有技能组合以及您的团队在必要时采用新平台和语言的能力。

在做出决定时,请考虑以上所有因素。

就我个人而言,我发现 XMPP 已经足够了,但对于我的目的来说有点臃肿。YMMV。

于 2012-09-28T20:29:00.253 回答
1

您正在比较一个水果篮和三种不同的橙子。

XMPP 是您提到的唯一一个实际上旨在支持聊天系统(其中很多存在)的协议。其他只是异步消息传递协议/技术。XMPP 已经通过BOSH支持基于 http 的聊天。毫无疑问,当规范最终确定时,它也将支持 WebSockets。实际上已经编写了一个草稿,但在这一点上,它似乎是使用草稿的草稿,因此可能很少(如果有的话)实现。

使用 XMPP 将允许您构建一个经过验证的技术来实现聊天系统,并允许您选择要“在后台”使用的传输方式。您实际上并没有说是否需要基于 http 的传输,但是使用 XMPP,您可以使用基于 tcp 套接字的传输或基于 http 的传输 (BOSH),并且知道它将来也将支持 WebSockets。

另一个好处当然是这是一个广泛使用的标准,它将允许在几乎所有流行(而不是那么流行)的语言和平台中重用现有的客户端、服务器和库。

可伸缩性与您引用的数字无关,因为大多数(可能全部)现有 xmpp 服务器将处理那么多用户。

于 2012-10-01T14:22:10.590 回答