我怎样才能缩放socket.io?

假设一个服务器获得10,000个并发连接(通过socket.io)。 这是很多,如果它不能再处理,我需要启动另一台服务器。

我怎样才能将两个服务器与他们的socket.io同步?

您可以尝试使用群集模块,并将负载分配给多个内核(如果您有多核CPU)。 如果这还不够,可以尝试使用反向代理在多个服务器之间分配请求,并使用redis作为中央会话数据存储(如果可以的话)。

我不会使用群集来扩展Socket.IO。 Socket.IO 0.6被devise为一个单一的进程服务器,它使用长时间的连接或轮询连接来实现服务器和客户端之间的实时连接。

如果你把你的socket.io客户端的集群面前,你基本上分配不同的服务器,谁不知道客户端之间的轮询传输。 这将导致连接中断。 但是,也广播给所有的客户将是一个痛苦,因为他们都分布在不同的服务器上,而你们之间没有IPC。

所以如果你只使用Web Socket和Flash Socket连接而不需要使用广播function,我只会build议使用Cluster。

那你该怎么办?

你可以等到socket.io 0.7发布,它是从底层开始devise用于多个进程。

或者你可以使用pub / sub在不同的服务器之间发送消息。