2

我设计了一个 Node.JS 服务器,它允许用户使用 websockets 登录、加入房间并与该房间中的其他用户交换数据。但是我现在正在寻找一种方法来使这个设置可扩展。

我花了整个下午研究各种负载均衡器,例如 nginx 和 haproxy,但我仍然不知道如何组织我的设置。

最初用户可以登录并查看活动房间。让这部分可扩展没什么大不了的。然而,他们可以加入一个特定的房间,此时他们需要与房间中的其他人连接到同一个 node.js 实例。这是我很难弄清楚的部分。

目前我的解决方案是创建两种不同类型的 node.js 实例。一种处理登录和房间概览请求方法的通用类型和一种处理多个房间的房间类型。然后,通用类型跟踪哪个特定实例负责哪个房间,并可以将正确的地址传递给用户的应用程序。

但是我对这个解决方案不满意,所以我愿意接受建议。我知道这是一个相当模糊的问题,但我不是在寻找一个确切的解决方案,而是关于如何组织一切的提示。

4

1 回答 1

4

udidu 提到了一个可能的解决方案,但要扩展,您应该查看一个可扩展的 pub/sub 解决方案;Redis是一种流行的数据存储,内置了 pub/sub,我经常使用它来取得很好的效果。

使用 Redis(或其他系统)帮助确保 Node.js 应用程序的每个实例都接收到有关谁在哪个房间聊天的信息,从而消除了房间中的所有用户都连接到同一个 Node.js 实例的依赖关系。

带 PubSub 的 Redis 聊天

于 2012-10-25T16:17:17.810 回答