我正在开发一个web服务,我们期望它很快就能大规模扩展。现在,该服务正在使用通过redis层通信的socket.io集群构建。
我想知道的是,切换到ejabberd是否有什么好处?XMPP服务器会比node.js+socket.io服务器处理更多的并发用户吗?
发布于 2015-11-23 09:57:10
Socket.io很难像XMPP当前解决方案(特别是ejabberd)那样进行扩展。
即使您决定使用Redis来扩展socket.io,正如大多数文章提到的那样,Socket.IO的存储概念也是建立在同步集群中每个连接节点之间的所有连接数据的基础上的。在Socket.IO中使用哪种存储并不重要,因为它们都使用这个概念,因为它是内置到Socket.IO存储接口中的,而不是您正在使用的存储。
为了理解同步对Socket.IO商店不利的原因,我们首先需要知道同步的内容。我们可以在Socket.IO管理器的initstore函数中找到这些信息。所以这是:
所有这些数据将通过pub/sub同步到每个连接的Socket.IO服务器。因此,如果有两个节点进程,并且它们都使用Socket.IO存储,那么它们都将在自己的进程内存中拥有所有连接的所有数据。不像你想象的那样是红色的。如果您有500个已连接的用户,这可能不是一个问题,但是一旦您接近5.000>连接,这个问题就会迅速增加。
请查看下列可能有用的文章:
Redis商店和Socket.io
发布于 2015-04-01 00:35:37
老实说,我要说的是,并发用户的数量将不仅仅取决于您的实现。谷歌并没有给我明确的答案,说明哪一个更可靠。XMPP是一个标准,因此有规则。Web也是一个标准,但它没有一组非常具体的规则来管理消息传递。我的意见是测试这两个,看看你喜欢哪一个。如果您需要对消息进行超控制,以及消息发生了什么,我建议使用socket.io,如果您想要一个经过测试的标准,并且不需要超级控制,请尝试XMPP。
发布于 2015-04-02 08:48:59
XMPP的好处是它是标准的,它提供了大量现成的特性。根据项目的范围和雄心,您可能不得不在socket.io中重新发明许多东西。
关于可伸缩性,我只能说,ejabberd在可伸缩性方面取得了很好的结果。我从未尝试过node.js / socket.io,所以我不能说。
它最终取决于您需要的特性。
https://stackoverflow.com/questions/29380831
复制相似问题