首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ejabberd对socket.io+redis的好处

ejabberd对socket.io+redis的好处
EN

Stack Overflow用户
提问于 2015-04-01 00:25:35
回答 3查看 4K关注 0票数 1

我正在开发一个web服务,我们期望它很快就能大规模扩展。现在,该服务正在使用通过redis层通信的socket.io集群构建。

我想知道的是,切换到ejabberd是否有什么好处?XMPP服务器会比node.js+socket.io服务器处理更多的并发用户吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-23 09:57:10

Socket.io很难像XMPP当前解决方案(特别是ejabberd)那样进行扩展。

即使您决定使用Redis来扩展socket.io,正如大多数文章提到的那样,Socket.IO的存储概念也是建立在同步集群中每个连接节点之间的所有连接数据的基础上的。在Socket.IO中使用哪种存储并不重要,因为它们都使用这个概念,因为它是内置到Socket.IO存储接口中的,而不是您正在使用的存储。

为了理解同步对Socket.IO商店不利的原因,我们首先需要知道同步的内容。我们可以在Socket.IO管理器的initstore函数中找到这些信息。所以这是:

  • 握手数据,握手数据包括您在授权期间添加的所有请求头、查询字符串、ip地址、信息、urls和可能的自定义数据。
  • 所有已打开、连接甚至关闭的连接的Ids。
  • 房间名称和加入房间的每一个id。

所有这些数据将通过pub/sub同步到每个连接的Socket.IO服务器。因此,如果有两个节点进程,并且它们都使用Socket.IO存储,那么它们都将在自己的进程内存中拥有所有连接的所有数据。不像你想象的那样是红色的。如果您有500个已连接的用户,这可能不是一个问题,但是一旦您接近5.000>连接,这个问题就会迅速增加。

请查看下列可能有用的文章:

当缩放Socket.IO时,集群会发生故障

Redis商店和Socket.io

如何缩放socket.io服务器?

票数 2
EN

Stack Overflow用户

发布于 2015-04-01 00:35:37

老实说,我要说的是,并发用户的数量将不仅仅取决于您的实现。谷歌并没有给我明确的答案,说明哪一个更可靠。XMPP是一个标准,因此有规则。Web也是一个标准,但它没有一组非常具体的规则来管理消息传递。我的意见是测试这两个,看看你喜欢哪一个。如果您需要对消息进行超控制,以及消息发生了什么,我建议使用socket.io,如果您想要一个经过测试的标准,并且不需要超级控制,请尝试XMPP。

另外,看看这个:使用websocket+node.js的聊天服务器与使用xmpp的本地客户端

票数 1
EN

Stack Overflow用户

发布于 2015-04-02 08:48:59

XMPP的好处是它是标准的,它提供了大量现成的特性。根据项目的范围和雄心,您可能不得不在socket.io中重新发明许多东西。

关于可伸缩性,我只能说,ejabberd在可伸缩性方面取得了很好的结果。我从未尝试过node.js / socket.io,所以我不能说。

它最终取决于您需要的特性。

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

https://stackoverflow.com/questions/29380831

复制
相关文章

相似问题

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