登录
注册
node.js 学习社区
master + worker模式的node多核解决框架——node-cluster

烧饼大漠

2014-12-14 12:09

还在为node运行于单进程而苦恼么?即便是node本身提供了cluster功能,或者在github和npm上有很多优秀的模块帮你做封装,但你仍然逃避不掉这些问题:

  • 性能问题;
  • 多进程worker的存活状态管理;
  • 服务的平滑重启;
  • 配置或者静态数据的动态reload.

我相信你完全有能力把这些事情做得很好。但在自己动手之前,为何不尝试一下node-cluster呢?
https://github.com/aleafs/node-cluster

node-cluster只有一个文件,区区500多行代码(包括注释),为你解决了上面的所有问题。利用node-cluster构建你的多进程服务非常简单:

在master进程中,你只需要5行代码:


var cluster = require('node-cluster');
var master = new cluster.Master();
master.register(8080, 'app.js');
master.dispatch();

在worker进程中,你只需要关心你的app逻辑即可。一个基于HTTP协议的典型例子如下:


var Http  = require('http');
var cluster = require('node-cluster');

var admin  = new cluster.Worker();
var server  = Http.createServer(function (req, res) {
	  admin.transact();

	  res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
	  res.end('hello world');

	  admin.release();
});

admin.ready(function (socket) {
  	server.emit('connection', socket);
});

实际上,我设计node-cluster的初衷可不只是这点用途。糯米们都能发掘出哪些应用场景呢?

原文引自:http://cnodejs.org/topic/4f293a91aa8e490b110214fd

回复 · 0

发表回复

你可以在回复中 @ 其他人