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

Scaling Socket.IO with Redis and then scaling Redis itself

本文关键字:Redis 扩展 然后 本身 Socket IO      更新时间:2023-09-26

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

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

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

我认为您正在寻找的是Redis Cluster。该页面上提到"正在进行中"answers"希望今年夏天"。

这里有一个演示。它基本上是散列+单个主和从冗余。但它还没有准备好。获取更多信息的最佳方式是访问这些产品的论坛和IRC。

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

对于更多的读者来说,将socket.io与其redis适配器一起使用是不可扩展的(至少目前是这样)。在引擎盖下,redis适配器使用pub/sub进行广播。以下是对此的讨论:https://github.com/redis/redis/issues/2672

需要强调的一点是:Redis集群不是答案(在上面的问题中讨论过,或者查看下面的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