如何有效地扩展 Websocket 服务器?

How to effectively scale Websocket servers?

那么,让我们考虑一组 Websocket 应用程序。每个用户都连接到这些服务器之一。我需要实现聊天应用程序,其中每个用户都可以向任何用户发送消息。

我正在寻找快速、可靠、可扩展的方法,如何实现。

我想,我需要 event bus 的一些好的实现。每个用户,当他连接到 websocket 时,都必须在事件总线中注册(或订阅)。然后,当另一个用户向给定用户发送消息时,event bus 向给定用户发布消息。

那么,我应该使用什么事件总线?

当然,我知道 Redis Pub/Sub,但我不确定,这是 2019 年的最佳选择。

Redis Pub/Sub 是一个非常好的选择。您实际上需要担心的一件事是某些情况下的连接数限制。由于您知道 WebSockets 是长期连接,因此它的负载平衡与 Http 的工作方式略有不同。我建议你阅读这篇文章,我相信你会找到一些很好的资源。