请问NODEJS负载均衡、灾难恢复如何做?大神帮帮忙哦。
发布于 10 年前 作者 xuhaijinsky2008 16753 次浏览 最后一次编辑是 6 年前

有至少两个问题哈: 1、nodejs服务如何做多服务器集群/负载均衡? 2、nodejs服务的高可用性如何? 比如说nodejs其中一台服务器接收到了1000个请求在排队处理,在处理第一次请求的时候服务器突然挂掉了,那后999个请求怎么办?nodejs服务器重启后会重新处理这1000个请求吗? 处理机制是什么呢(序列化到硬盘再恢复吗)?

11 回复

Cluster模块或者用春哥的node-cluster

春哥的node-cluster不仅仅是针对一个主机上的多个CPU吗?也可以针对多台服务器是吧?

各位大神帮帮忙哦。

nginx在node服务器之前做负载均衡的比较多吧。灾难恢复多数使用守护进程的方式。forever或者node-cluster都可以,也可以自己写。

也就是说用Nginx做多服务器的负载均衡,用node-cluster做一台机器多CPU的负载均衡?灾难恢复能不能说详细一点呢?

@xuhaijinsky2008 除了靠日志,还能靠什么,我也想知道。

@xuhaijinsky2008 如果用node-cluster的话应该带有灾难恢复的功能吧。如果你用其他的可以用forever做灾难恢复。我用了一种简单的守护进程的方式,但是这种方式很暴力,不推荐生产使用,代码如下: function start(){ console.log(‘Mother process is running.’); var ls = spawn(‘node’, [‘app.js’]); ls.stdout.on(‘data’, function (data) { console.log(data.toString()); });

ls.stderr.on('data', function (data)
{
    console.log(data.toString());
});

ls.on('exit', function (code)
{
    console.log('child process exited with code ' + code);
    delete(ls);
    ls= null;
    setTimeout(start,3000);
});

}

单机上用node-cluster做进程级的容灾;多机之间在node上层用nginx做反向代理;宕机、网络不通的情况需要名字服务或者客户端做心跳来解决。

@pengchun 关于 宕机、网络不通的情况需要名字服务或者客户端做心跳来解决, 可否深入解释一下,有文章体积如何实现吗?名字服务是指DNS吗?客户端做心跳是指什么呢?

@benliu723 心跳简单来讲就是开个定时器定期检查子进程死活,没反应的就干掉重启一个

@chemdemo 明白了,谢谢你!

回到顶部