[microservices]02-Nodejs&Express作为微服务api网关
- github项目地址: microservices
1. 安装Node、NPM和Express
安装Nodejs后,npm会一起安装,然后npm install express安装Express.
2. 使用Express框架开发web应用
express使用例子:1
2
3
4
5
6
7var express = require('express');
var port = 1234;
var app = express();
app.use(express.static('.'));
app.listen(port, function(){
console.log('server is running at %d', port);
});
express进行简易路由:1
2
3app.get('/hello', function(req, res){
res.send('Hello');
});
3. 搭建Nodejs集群环境
利用服务器的多核CPU,让每个CPU都运行一个Node.js进程,例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20var cluster = require('cluster');
var express = require('express');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
// Create a worker
cluster.fork();
}
} else {
// Workers share the TCP connection in this server
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
// All workers use this port
app.listen(8080);
}
4. 使用Node.js实现反向代理,作为统一服务网关
使用Node作为api网关,原理是利用Node的http-proxy模块来启动代理服务器,实现反向代理。
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17var http = require('http');
var httpProxy = require('http-proxy');
var PORT = 3000;
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://localhost:8080' //代理的目标地址
});
});
app.listen(PORT, function(){
console.log('server is running at %d', port);
});
- 下一步,就是服务的注册和发现,Nodejs网关将需要增加服务发现的功能