首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现一个可扩展的多室聊天系统

实现一个可扩展的多室聊天系统
EN

Stack Overflow用户
提问于 2013-08-22 14:35:25
回答 1查看 920关注 0票数 0

我最近一直在研究sockjs-龙卷风,并且正在为一个社交网站开发一个聊天功能。我试图了解构建可伸缩多室聊天功能所使用的常用方法。我将概述我想过的几种方法,并希望得到反馈。在现实世界中使用的方法是什么?这些方法的优缺点是什么?

Prereqs:

  • 运行龙卷风
  • 使用sockjs-龙卷风库
  • sockjs- js的客户端库

其他一切都是开放的。

我考虑过的方法:

用于循环

这似乎是最简单的方法。您创建一个订阅某些房间类的用户类。用户发送包含房间id的消息类,而服务器只将循环中的消息重定向到订阅该房间的用户。在我看来,这似乎是最糟糕的,因为复杂性显然至少是线性的。(想象一下,500个用户同时连接到5个聊天室。)

多任务/多服务器实例

这似乎也是个坏主意,因为您可以在任何时候运行500个服务器实例.不同的港口?我真的不确定这个方法的实现。

本地支持

现在,很多库都内置了这一点,比如socketio。但是,由于唯一的node.js支持,这不是一个选项。(我在龙卷风服务器上)袜子,特别是没有建立支持多个“房间”。

结论

我正在寻找资源/案例研究,以及行业标准。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-29 16:33:00

我只会使用像RabbitMQ这样的消息队列服务器和一个扇出交换作为每个“聊天室”。您可以看到在Python 这里中使用扇出交换的示例。皮卡 AMQP库也与“旋风”一起工作。

使用消息队列系统的优点是,您可以让用户连接到不同服务器上的不同旋风进程,同时仍然在同一个“房间”中,从而使您在HTTP层上具有高可用性。RabbitMQ还具有HA功能(虽然不是最强大的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18383473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档