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

时间:2012-08-20 22:13:52

标签: node.js redis socket.io node-redis

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

所以它让我思考......重点是什么?所以我需要更多的redis服务器并在它们之间缩放?我的观点是,他们将永远是顶级服务器的瓶颈。

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

非常感谢

2 个答案:

答案 0 :(得分:2)

我认为你要找的是Redis Cluster。在该页面上提到“正在努力”和“希望今年夏天”。

有一个演示文稿here。它基本上是散列+单主机和从机以实现冗余。但还没有准备好。获取更多信息的最佳选择是访问论坛和IRC以获取这些产品。

如果某人做了类似的事情,他们将会在这些渠道上。

答案 1 :(得分:0)

对于进一步的读者来说,使用 socket.io 和它的 redis 适配器是不可扩展的(至少现在是这样)。在幕后,redis 适配器使用 pub/sub 进行广播。以下是关于此的讨论:https://github.com/redis/redis/issues/2672

要强调的一件事:Redis Cluster 不是答案(在上面的问题中讨论或查看下面的 youtube 链接以获取更多详细信息)

我在这里找到了一个关于扩展 Redis pubsub 的有趣解决方案:https://redislabs.com/wp-content/uploads/2018/04/Redis-Day-TLV-2018-Scaling-Redis-PubSub.pdf

观看 YouTube:https://www.youtube.com/watch?v=6G22a5Iooqk&ab_channel=RedisLabs