使用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

浏览器测试:

重定向成功:

经验分享 程序员 微信小程序 职场和发展