我目前正在使用Linode来部署我的应用程序。我有2台服务器,其中1台数据库服务器前面有1个Load Balancer。
我正在使用Redis作为数据库和NowJS来实现聊天室。使用Pub / Sub一切正常。现在,我想使用群集来利用多核服务器。但是,在应用集群时,我遇到了奇怪的情况。有时,该应用程序正常运行,有时却无法正常运行,大约25%正常运行,而75%则无法正常运行(我运行了4个进程)。因此,我可以假设集群导致nowJS无法正常工作。现在,我必须做出决定
1.切换到SocketIO并使用RedisStore(我是否仍可以将pub / sub与RedisStore一起用于SocketIO?还是完全切换到RedisStore)
2.无需集群,并在需要时添加更多服务器(这是资源的浪费,因为未使用多个内核)
P / s:对不起我的英语不好,我不是母语。
最佳答案
我不确定您说的是25%和75%,但是如果您指的是cpu /内存,您应该知道Node在没有事情要做的情况下非常高效,因此可以解释这种情况。
同样,使用多个内核的唯一方法是产生更多的进程(因此使用集群)。
您正在使用RedisStore(因此Socket.IO可以将连接数据保留在内存中,而不是将单个进程=>扩展到一个进程之外)和Redis用于pub / sub的事实非常好,您也可以将这些独立使用于Socket.IO (NowJS是Socket.IO之上的另一层抽象)。
因此,您应该使用多个进程,然后尝试水平缩放(升级计算机),并且仅在尝试垂直缩放(添加更多计算机)之后再尝试。
关于node.js - Scale SocketIO(NowJS),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8463427/