假设一个服务器通过socket.io处理10,000个并发连接。如果无法处理更多连接,则需要启动另一个服务器。如何使用它们的socket.io将这两个服务器进行同步?
我不建议使用Cluster来扩展Socket.IO。Socket.IO 0.6被设计为单进程服务器,它使用长连接或轮询连接来实现服务器与客户端之间的实时连接。
如果你在Socket.IO客户端前面加上Cluster,你基本上会将轮询传输分配到不同的服务器上,这些服务器不知道客户端的存在。这将导致连接中断。但是,向所有客户端广播将会很麻烦,因为它们都分布在不同的服务器上,并且它们之间没有IPC。
所以,我只建议在仅使用Web Socket和Flash Socket连接且不需要使用广播功能时使用Cluster。
那么应该怎么做呢?
你可以等待Socket.IO 0.7发布,它是从头开始设计的,可以用于多个进程。
或者你可以使用发布/订阅来在不同的服务器之间发送消息。