【发布时间】:2012-07-02 06:27:37
【问题描述】:
我创建了一个 nodejs 应用程序,它可以在单核中正常工作。此应用程序使用 socket.io 进行轻快的通信。
现在,我想通过使用 nodejs 中的 cluster 模块使其能够在多核系统上运行来垂直扩展我的应用程序。
我的应用程序中的所有内容都将数据存储在 Redis 中,因此,处理一些基本数据和会话没有问题。
但是,当我使用集群生成多个工作进程时,似乎每个工作进程都有自己的套接字处理。
例如,假设有一个名为“guest”的聊天室。
用户 A 和用户 B 连接到房间,他们被分配到不同的工作进程。
由于它们在不同的进程中,并且这些进程不共享套接字侦听器,因此用户 A 和用户 B 无法相互交谈。
解决这个问题的好方法是什么? socket.io 是否支持多核系统?
socket.io 是否只供单核使用?
【问题讨论】:
-
您可以使用
RedisStore运行socket.io 以扩展进程/服务器。更多深度请参见this previous answer of mine。