rrestjs v0.4版升级文档

rrestjs v0.3版本只是改了一些小功能,昨天把v0.4版本开发出来和简单测试通过了,具体是将cluster模块的API全部重写了,然后增加了一个监控后台,以后这个监控后台可能会独立出来。上更新列表:

老规矩,项目地址:https://github.com/DoubleSpout/rrestjs

1、重新改写cluster模块的API

重写后的cluster模块只需要在config文件中进行配置即可开启或关闭,保持原有的各项功能不变,但是代码异常简洁:

a、可以开启多进程监听同一端口,增加程序运行性能和稳定性

b、可以开启多进程监听不同端口,增加程序运行的灵活性(之前我们公司的即时聊天项目就用到了这个功能,node.js监听不同端口,然后前面再放nginx做url的hash,保证同一个聊天室的用户在同一个node.js进程中。)

c、当开启cluster功能后,如果任一worker进程死亡,会由master自动唤醒这个worker,如果多个worker监听不同端口,则唤醒的这个worker还是会继续监听此前死掉的那个worker的端口。

d、当设置的worker数为1时,则自动进入开发模式,可以让开发node.js应用像PHP那样方便,不用每次写完代码去点一下重启。根据配置的文件夹目录发生任意改变(如保存、新建等)都将自动重启worker进程,而且rrestjs会自动去监听此文件夹目录下的子文件夹或孙子文件夹等等,所以这个被监听的目录不宜配置嵌套太多。当worker数大于1时,则将自动关闭此功能防止应用上线后的误操作。

e、将利用clusterplus模块自动同步一台服务器上多个进程的session(这个功能也只限于中小型网站,稍微大点最好还是用mongodb做session存储介质)

放上2个代码的小例子:

以下是开启 config.ClusterNum(假设4个) 个进程监听4个端口的代码:

1
2
3
4
5
6
7
8
module.exports.conf = require('./config/config');//说明见git上的API
var http = require('http'),
rrest = require('rrestjs'),
port = [3000, 3001, 3002, 3003],
server = http.createServer(rrest(function (req, res){
res.send('process '+rrest.id+' is listen at '+port[rrest.id]+' : hello world everyone!');
}));
rrest.listen(server, port); //如果要监听多个端口必须这么写,这里如果不传port参数,则自动去读config.listenPort;

以下是开启 config.ClusterNum 个进程监听1个端口的代码:(当 ClusterNum 为 1时,进入开发模式,根据配置的文件夹将自动重启node.js进程像PHP那样开发node.js应用)

1
2
3
4
5
6
7
8
module.exports.conf = require('./config/config');//说明见git上的API 
var http = require('http'),
rrest = require('rrestjs'),
server = http.createServer(rrest(function (req, res){
res.send('process '+rrest.id+' is listen at '+port[rrest.id]+' : hello world everyone!');
})).listen(rrest.config.listenPort);//读取配置文件的监听端口号,必须这么写,只需修改配置文件即可轻松部署
//当然上面的listen不写,也可以这么写
//rrest.listen(server);

2、rrestjs运行监控后台

rrestjsv0.4版本如果开启cluster则可以选择性的开启一个监控后台,可以很方便的查看应用的运行状态,还可以下载日志和重启worker进程,截个图吧:

img

目前这个监控后台功能还很弱,还有待加强呀