2012-07-01 31 views
7

我已经创建了一个nodejs应用程序,它可以在单个内核中正常工作。此应用程序使用socket.io进行光线&快速通信。在多核服务器中使用socket.io与集群的好方法?

现在,我想通过在nodejs中使用cluster模块使其能够在多核系统上运行来纵向扩展我的应用程序。

我的应用程序中的所有内容都将数据存储在Redis中,因此,处理一些基本数据&会话时不存在问题。

但是,当我使用集群产生多个工作进程时,似乎每个工作者都有自己的套接字处理。

例如,假设有一个叫做'guest'房间的聊天室。

用户A和用户B连接到房间,并将它们分配给不同的工作进程。

由于它们处于不同的进程中,并且这些进程不共享套接字侦听器,因此用户A和用户B无法相互通信。

什么是解决此问题的好方法? socket.io是否支持多核系统?

是否仅用于单核使用的socket.io?

+3

您可以用'RedisStore' socket.io运行在缩放过程/服务器。请参阅[此前我的答案](http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798)更深入。 –

回答

3

您可以像平常一样使用socket.io,但在后台使用redis存储。它也将支持socket.io上的多个实例,而无需任何外部库。它甚至支持多个实例的房间。

链接到如何建立socket.io与Redis的:Using Multiples Nodes/Processes with socket.io

+0

我认为这个链接并没有真正指向你认为的位置。 – funerr

+0

我也觉得。让我编辑它。 –

相关问题