使用nodejs 搭建微服务网关
淘宝镜像源:
npm install -g cnpm --registry=http://registry.npm.taobao.org
node.js 是一个基于Chrome浏览器的V8引擎开发的高性能JavaScript 引擎。
nodejs 提供了“事件驱动”模型,可将当前事件加入到事件队列中去轮询。
nodejs 提供了“异步非阻塞I/O”模型.
安装nodejs (这个自己搜索解决)
1 编辑一个web 测试例子:
创建app.js 文件 输入以下代码
var http = require(http);
var PORT = 1234;
var app = http.createServer(function(req,res){
res.writeHead(200,{Content-Type:text/html});
res.write(<h1>Hello</h1>);
res.end();
})
app.listen(PORT,function(){
console.log(server is runing at %d,PORT)
})
使用node.js 命令运行 app.js
node app.js
浏览器测试:
如果想修改了源代码能立即生效,可以安装supervisor ,通过supervisor 启动.这样修改了源码会立即生效。
全局 安装 supervisor :
npm install supervisor -g
运行app.js
supervisor app.js
node.js 采用单线程模型,拥有基于事件驱动的异步非阻塞IO特性,可以充分的利用多核CPU 带来的价值.
搭建 node.js 集群环境
创建cluster.js 编辑以下代码:
var http = require(http);
var cluster = require(cluster);
var os = require(os);
var PORT = 1234;
//获取cpu内核数
var CPUS = os.cpus().length;
//当前进程是主进程
if(cluster.isMaster){
for(var i = 0; i< CPUS;i ){
cluster.fork();
}
}else{
var app = http.createServer(function(res,rep){
res.writeHead(200,{Content-Type:text/html});
res.write(<h1>Hello正好呵呵呵是地方是范德萨sadfsdfs</h1>);
res.end();
})
app.listen(PORT,function(){
console.log(server is runing at %d,PORT)
})
}
supervisor cluster.js
如图可见已创建了4个web 应用.
cluster 更详细的信息查看官网文档:
使用node.js 实现反向代理:
1 安装HTTP Proxy 模块
npm install http-proxy
创建appproxy.js
var http = require(http);
var httpProxy = require(http-proxy);
var PORT = 1234;
//创建代理服务器监听捕获异常事件
var proxy = httpProxy.createProxyServer();
proxy.on(error,function(err,req,res){
res.end();//异常事件不处理
});
var app = http.createServer(function(req,res){
//执行反向代理
proxy.web(req,res,{
//目标地址
target:http://www.chenjiaming.com
});
});
app.listen(PORT,function(){
console.log(server is runing at %d,PORT);
});
编译appproxy.js:
node appproxy.js
浏览器测试:
重定向成功:
