0.0.3 • Published 6 years ago
gifter v0.0.3
这个是一个关于nodejs基于grpc采用etcd进行的服务发现注册。
环境准备
grpc必须采用静态编译方式书写接口
etcd 的安装以及开启
需要golang环境进行编译 https://etcd.io/docs/v3.4.0/dl_build/ 如果是mac平台可直接菜用brew安装即可,当然你也可以直接使用docker运行
简单使用
安装gifter
npm install gifter
客户端
const messages = require('./proto/proto/test_pb')
const services = require('./proto/proto/test_grpc_pb')
const Gift = require('gift')
const http = require('http')
const gift = new Gift()
const client = gift.client()
client.bind('Greeter',services)
http.createServer(async function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<h1>Node.js</h1>');
if(req.url==='/'){
const Greeter = await client.get('Greeter')
var request = new messages.HelloRequest();
var user = 'wenwen';
request.setName(user);
if(Greeter){
const data = await Greeter.sayHello(request)
if(data){
const h = data.getMessage()
res.end(`<p>${h}</p>`);
return
}else{
res.end(`<p>server miss</p>`);
}
}
res.end(`<p>server miss</p>`);
}
}).listen(3000);
console.log("HTTP server is listening at port 3000.");
主服
负责服务的健康检测。
const Gift = require('gift')
const gift = new Gift()
const server = gift.master()
服务端
const messages = require('./proto/proto/test_pb');
const services = require('./proto/proto/test_grpc_pb');
const Gift = require('gift')
function sayHello(call, callback) {
const reply = new messages.HelloReply();
console.log('被请求了1')
reply.setMessage('server 1 : Hello ' + call.request.getName());
callback(null, reply);
}
function sayHello2(call, callback) {
const reply = new messages.HelloReply();
console.log('被请求了2')
reply.setMessage('server 2 : Hello ' + call.request.getName());
callback(null, reply);
}
const ser = {
sayHello
}
const ser2 = {
sayHello:sayHello2
}
const gift = new Gift()
const giftSer = gift.server()
giftSer.register('Greeter',services,ser,{
port:'50051',
ip:'127.0.0.1',
health:true
})
giftSer.start()
const gift1 = new Gift()
const giftSer1= gift1.server()
giftSer1.register('Greeter',services,ser2,{
port:'50052',
ip:'127.0.0.1',
health:true
})
giftSer1.start()