使用nodejs 搭建微服务网关

  • 2019-05-24 06:57:29
  • 302
  • 0

淘宝镜像源:

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




浏览器测试:http://localhost:1234




如果想修改了源代码能立即生效,可以安装supervisor ,通过supervisor 启动.这样修改了源码会立即生效。


supervisor github开源源码地址


https://github.com/petruisfan/node-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 更详细的信息查看官网文档:


https://nodejs.org/dist/latest-v10.x/docs/api/cluster.html




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


浏览器测试:


http://localhost:1234


重定向成功:





回复
举报
全部回复(0)

参与讨论