2.4 KiB
2.4 KiB
一 模拟三台集群
本章模拟微服务跨主机通信(直接使用上一章中的rpc也可行):
# 以server模式运行agent,启动第一个节点node1:
consul agent -server -bootstrap-expect 2 -data-dir ~/tmp/consul/data -node=n1 -bind=192.168.186.128 -ui -config-dir /etc/consul.d -rejoin -join 192.168.186.128 -client 0.0.0.0
# 以server模式运行agent,启动第二个节点node1:
consul agent -server -bootstrap-expect 2 -data-dir ~/tmp/consul/data -node=n2 -bind=192.168.186.129 -ui -rejoin -join 192.168.186.128
# 以client模式运行cosnul agent,-join 加入到已有的集群中去
consul agent -data-dir /tmp/consul -node=n3 -bind=192.168.186.130 -config-dir /etc/consul.d -rejoin -join 192.168.186.128
二 启动服务
启动项目:
# 在第一台主机上启动微服务mysrv:
cd ~/go/src/test/mysrv
go run main.go
# 在第二台主机上启动微服务myweb:
cd ~/go/src/test/myweb
go run main.go
在第一台主机上创建json文件:/etc/consul.d/config.json:
{
"services":[
{
"name": "mysrv",
"tags": [
"srv"
],
"address": "127.0.0.1",
"port": 3000,
"checks": [
{
"http":"http://localhost:3000/health",
"interval":"10s"
}
]
},
{
"name": "myweb",
"tags": [
"web"
],
"address": "127.0.0.1",
"port": 8080,
"checks": [
{
"http":"http://localhost:3000/health",
"interval":"10s"
}
]
}
]
}
加载服务:
consul reload
此时在第二台主机上输入:localhost:8080,就可以开始操作了!
三 升级为grpc版本
mysrv的main中服务的创建方式修改为以下方式即可:
// "github.com/micro/go-micro/service/grpc"
// 创建新服务
service := grpc.NewService( // rpc版本是: micro.NewService()
//当前微服务的注册名
micro.Name("go.micro.srv.srv"),
//当前微服务的版本号
micro.Version("latest"),
)
myweb的handler中调用方式的改变:
// "github.com/micro/go-micro/service/grpc"
server := grpc.NewService()
server.Init()
mysrvClient := mysrv.NewMysrvService("go.micro.srv.mysrv", server.Client())