首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天项目-使用socket.io实现负载均衡

聊天项目-使用socket.io实现负载均衡
EN

Stack Overflow用户
提问于 2015-02-08 12:03:03
回答 2查看 11K关注 0票数 15

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-13 14:35:08

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

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

代码语言:javascript
复制
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

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

弹性负载AWS ELB(elastic load balancer)

  • Nginx

  • Apache

  • HAProxy

其中..。

票数 13
EN

Stack Overflow用户

发布于 2015-02-11 22:30:57

查看NPM包mong.socket.io。它具有将socket.io数据保存到mongoDB的能力,如下所示;

代码语言:javascript
复制
{
    "_id" : ObjectId("54b901332e2f73f5594c6267"),
    "event" : "join",
    "message" : {
            "name" : "join",
            "nodeId" : 426506139219,
            "args" : "[\"URAiA6mO6VbCwquWKH0U\",\"/54b6821asdf66asdasd2f0f9cd2997413780273376\"]"
    }}

或者你可以使用这里提到的redis适配器;

Socket.IO Using multiple nodes

然后只需使用NGINX反向代理,所有节点进程都应该彼此共享Socket.IO事件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28390429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档