我参与了一个聊天工具的开发项目,我们使用node.js,socket.io (房间)和mongodb。我们正处于性能测试阶段,我们非常关注系统是否需要负载平衡。
如果我们的项目需要它,我们如何进行开发?在NGINX上研究的J'a看起来很酷,但我们怀疑是否能解决我们的问题,因为系统将如何聊天,我们担心服务器之间不能正确对话……
如果我们需要负载均衡,我们应该去哪里?
发布于 2015-02-13 14:35:08
为了确保我们可以扩展到多个节点,同时保持不同客户端和不同服务器之间的互连,我使用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
就处理不同的节点服务器而言,有不同的方法。
弹性负载AWS ELB(elastic load balancer)
其中..。
发布于 2015-02-11 22:30:57
查看NPM包mong.socket.io。它具有将socket.io数据保存到mongoDB的能力,如下所示;
{
"_id" : ObjectId("54b901332e2f73f5594c6267"),
"event" : "join",
"message" : {
"name" : "join",
"nodeId" : 426506139219,
"args" : "[\"URAiA6mO6VbCwquWKH0U\",\"/54b6821asdf66asdasd2f0f9cd2997413780273376\"]"
}}或者你可以使用这里提到的redis适配器;
Socket.IO Using multiple nodes
然后只需使用NGINX反向代理,所有节点进程都应该彼此共享Socket.IO事件。
https://stackoverflow.com/questions/28390429
复制相似问题