聊天项目 - 使用socket.io进行负载均衡

Ren*_*sso 15 nginx mongodb node.js socket.io socket.io-1.0

我参与了聊天的开发项目,我们使用node.js,socket.io(rooms)和mongodb.我们正处于性能测试阶段,如果系统需要负载平衡,我们非常担心.

如果我们的项目需要,我们如何发展?J'a研究NGINX看起来很酷,但我们怀疑是否能解决我们的问题,因为系统将如何进行聊天,我们担心服务器不能正确地相互交谈......

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

Bri*_*oah 11

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

这样做是在服务器之间创建一个pub/sub系统,以跟踪不同的套接字客户端.

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})});
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多:socket.io-redis

就处理不同的节点服务器而言,有不同的方法.

  • AWS ELB(弹性负载平衡器)
  • Nginx的
  • 阿帕奇
  • HAProxy的

其中......