node.js - 聊天项目 - 使用 socket.io 进行负载平衡

我参与了一个聊天开发项目,我们正在使用 node.js、socket.io(房间)和 mongodb。我们正处于性能测试阶段,我们非常关心系统是否需要负载平衡。

如果我们的项目需要,我们该如何开发? J'a 研究 NGINX 看起来很酷,但我们怀疑是否能解决我们的问题,因为系统将如何聊天,我们担心服务器之间没有正确地进行对话......

如果我们需要负载平衡,我们该去哪里?

最佳答案

为了确保我们可以扩展到多个 Node 但保持不同客户端和不同服务器之间的互连,我使用了 redis。它的使用和设置实际上非常简单。

这样做是在您的服务器之间创建一个发布/订阅系统,以跟踪您的不同套接字客户端。

var io = require('socket.io')(3000),
    redis = require('redis'),
    redisAdapter = require('socket.io-redis'),
    port = 6379,
    host = '127.0.0.1',
    pub = redis.createClient(port, host),
    sub = redis.createClient(port, host, {detect_buffers: true}),
    server = http(),
    socketServer = io(server, {adapter: redisAdapter({pubClient: pub, subClient: sub})});

在此处阅读更多信息:socket.io-redis

就处理不同的 Node 服务器而言,有不同的方法。

  • AWS ELB(弹性负载均衡器)
  • Nginx
  • Apache
  • HAProxy

其中...

https://stackoverflow.com/questions/28390429/

相关文章:

mongodb - Spark 流 : foreachRDD update my mongo RDD

mongodb - MongoDB批量FindAndModify的解决方案

javascript - Mongoose 连接到 MongoDB Atlas 的最佳池大小是多少?

node.js - 将数据插入 MongoDB - 没有错误,没有插入

javascript - 在 MongoDB 中按字母顺序对文档进行排序(也称为自然排序顺序,人类排

mongodb - 当父字段未知时,在嵌套文档中查找具有字段的记录

performance - 字段类型在 MongoDB 索引中是否重要?

javascript - MongoError : cannot change _id of a d

ruby-on-rails - MongoDB 的最佳分析/数据可视化库

mongodb - 更新 mongodb 中的嵌套文档