用Redis扩展Socket.IO,然后扩展Redis本身
Scaling Socket.IO with Redis and then scaling Redis itself
在使用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
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- TableExport jquery插件:文件名和扩展名问题
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 扩展SVGTextElement时出现Typescript Uncaught TypeError
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- Javascript”;类“;带有参数的扩展
- 试图阻止Chrome通过扩展关闭
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- DataTable按下键选择扩展/导航
- 扩展jQuery插件以更改配置
- 用Redis扩展Socket.IO,然后扩展Redis本身