我设计了一个Node.JS服务器,允许用户登录、加入房间,并通过websockets与房间中的其他用户交换数据。然而,我现在正在寻找一种方法来使此设置可伸缩。
我花了整个下午研究各种负载均衡器,比如nginx和haproxy,但我仍然不知道如何组织我的设置。
最初,用户可以登录并查看活动房间。让这个部件变得可伸缩没什么大不了的。但是,他们可以加入特定的房间,此时他们需要连接到与房间中的其他人相同的node.js实例。这是我搞不懂的部分。
目前,我的解决方案是创建两种不同类型的node.js实例。一个通用类型用于处理登录和房间概览请求方法,另一个房间类型用于处理多个房间。然后,泛型类型跟踪哪个特定实例负责哪个房间,并可以将正确的地址传递给用户的应用程序。
然而,我对这个解决方案并不满意,所以我愿意接受建议。我知道这是一个相当模糊的问题,但我并不是在寻找一个确切的解决方案,而是在寻找如何组织一切的提示。
发布于 2012-10-26 00:17:18
udidu谈到了一个可能的解决方案,但为了扩展,你应该考虑一个可伸缩的发布/订阅解决方案;Redis,一个流行的数据存储,has pub/sub built in和我经常使用它,效果很好。
使用Redis (或其他系统)来帮助确保您的Node.js应用程序的每个实例都接收到关于谁在哪个房间内聊天的信息,从而消除了一个房间中的所有用户都连接到同一个Redis实例的依赖。

https://stackoverflow.com/questions/13070853
复制相似问题