使用 Redis 扩展 Socket.IO,然后扩展 Redis 本身

udi*_*idu 6 javascript redis node.js socket.io node-redis

使用 Node.js 和 socket.io 一段时间后,我明白如果我希望我的应用程序支持多达 100 万个并发用户,我需要对其进行扩展,因此我开始使用 Redis 在PUB/SUB套接字之间发送消息并运行大量套接字.io 服务器实例,在同一台机器和其他机器上,但我所有的 socket.io 服务器都使用同一个 Redis 服务器。

这让我思考:这有什么意义呢?我是否需要更多的 Redis 服务器并在它们之间进行扩展?我的观点是,它们永远是顶级服务器的瓶颈。

我的问题是,Redis 是否可以扩展?如果是,那么连接到不同 socket.io 服务器的所有套接字如何能够在 Redis 服务器之间进行 PUB/SUB?

Gat*_* VP 2

我认为您正在寻找的是Redis Cluster。该页面上提到“正在开发”和“希望在今年夏天”。

这里有一个演示。它基本上是散列+单个主设备和从设备以实现冗余。但它还没有准备好。要了解更多信息,最好的办法是访问这些产品的论坛和 IRC。

如果有人在做类似的事情,他们就会出现在这些频道上。

  • 是的,Redis Cluster 就是解决这个问题的方法。自 2012 年 4 月以来,我一直在使用它来处理其他事情和 pub/sub,它的效果非常好:) 我编写了一个 Nodejs 模块,可以帮助您处理 Redis 集群并为您进行客户端哈希处理,您所要做的一切要做的就是为其中一个节点提供一个地址,如果您正确配置了集群,它会为您发现其他节点:https://github.com/joaojeronimo/node_redis_cluster (2认同)