聊天Web服务,多个进程在同一端口上侦听

时间:2015-01-19 05:20:30

标签: node.js networking process load-balancing

我正在制作聊天应用程序。为了扩展和使用所有核心,我创建了多个服务器,这些服务器正在监听由基础设施提供的相同端口以供收听。每条信息都是in memory

但是,有可能让我们说.. A and B互相聊天,并且process1X and Y中的信息正在聊天并在process2中有信息。

我的问题是:

  1. 节目是否竞争每条消息?如果新邮件来自A,则可以转到process2,其中没有关于AB的信息。
  2. 或者它是否依赖于某些事情,如果我使用上面的简单http消息会发生问题,但如果我使用web-sockets则不会发生。

    我正在使用node.js,但我认为这是一个与语言无关的问题。

    所以,代码就像:

    if (cluster.isMaster) {
      // Fork workers.
      for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
      }
    } else {
      http.Server(function(req, res) { ... }).listen(8000);
    }
    

    我应该只制作一个listening-process intelligent load-balancer,它会像{{1}}那样将消息发送到正确的流程吗?

1 个答案:

答案 0 :(得分:0)

是的,流程会竞争每条消息。所以,要解决这个问题:

我可以像在Redismemcache之类的共享数据库中那样从web服务器中获取会话或聊天信息等数据,并从每个Web服务器查询它。

我也可以在mongodb中存储Web套接字连接。所以,它变得更容易扩展。