【问题标题】:chat web service with multiple processes listening on same port具有多个进程在同一端口上侦听的聊天 Web 服务
【发布时间】:2015-01-19 05:20:30
【问题描述】:

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

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

我的问题是:

  1. 程序是否竞争每条消息?如果有新消息来自A,它可以转到没有AB 信息的process2

或者它是否取决于我是否使用简单的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,将消息发送到正确的进程?

【问题讨论】:

  • @downvoter 否决这个问题的任何 cmets/原因?

标签: node.js networking process load-balancing


【解决方案1】:

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

我可以像Redismemcache 这样的共享数据库从网络服务器中获取会话或聊天信息等数据,并从每个网络服务器查询。

我也可以将网络套接字连接存储在mongodb 中。因此,它变得更容易扩展。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2021-10-28
    • 2014-04-02
    • 1970-01-01
    相关资源
    最近更新 更多