跳到主要内容

gomicro-3-集群

一 模拟三台集群

本章模拟微服务跨主机通信(直接使用上一章中的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())