我正在为Acani编写一个聊天服务器,我对使用负载均衡器可扩展性扩展node.js和websockets有一些疑问。
负载均衡 Node.js 究竟意味着什么?这是否意味着将运行我的服务器应用程序的n 个独立版本,每个版本都在单独的服务器上?
为了允许一个客户端向所有其他客户端广播消息,我
webSocketConnections
在服务器上存储了一组所有打开的消息。但是,如果我有n 个独立版本的服务器应用程序正在运行,每个版本都在单独的服务器上,那么我会有n 个不同的集合webSocketConnections
吗?如果 1 和 2 的答案是肯定的,那么我如何存储一个通用集
webSocketConnections
(跨所有服务器)?我认为我可以做到这一点的一种方法是使用 Redis Pub/Sub 并让每个webSocketConnection
订阅者都订阅 Redis 上的频道。但是,那么,单台 Redis 服务器会不会成为瓶颈呢?然后我将如何扩展 Redis?扩展 Redis 意味着什么?这是否意味着我在不同的服务器上运行了m个独立版本的 Redis?这甚至可能吗?
我听说 Redis 无法扩展。为什么会有人这么说。这意味着什么?如果这是真的,对于发布/订阅和/或存储所有广播消息的列表是否有更好的解决方案?
注意:如果您的答案是 Acani 永远不必扩展,即使地球上所有 70 亿人(并且正在增长)中的每一个人每秒都向地球上的其他所有人广播一条消息,那么请给出一个有效的解释。