go-micro 使用 Consul 做服务发现的方法和原理
go-micro v4 默认使用 mdns 做服务发现。不过也支持采用其它的服务发现中间件,因为多
年来一直使用 Consul 做服务发现,为了方便和其它服务集成,所以还是选择了 Consul。这
篇文章将介绍 go-micro 使用 Consul 做服务发现的方法。关于 Consul 的使用方式请参考我的
另一篇文章:使用 Consul 做服务发现的若干姿势 。
安装 Consul
如果你已经安装 Consul,或者对 Consul 很熟悉了,按照自己的方式处理 Consul 就行了。
这里提供一个通过 docker 快速安装 Consul 的方式,当然前提是你得安装了 docker。
执行命令:
docker run --name consul1 -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -d
consul:latest
这会在 docker 容器中启动一个最新版本的 Consul 服务,并将相关端口开放给主机。
安装 Consul 插件
使用 Consul 作为服务注册和服务发现,需要先安装 go-micro 的 consul 插件:
go get .com/go-micro/plugins/v4/registry/consul
服务端使用 Consul
服务注册
为了使用 Consul 做服务注册,需要为 go-micro server 显式的指定 Consul Registry。直接看
代码吧:
func main() {
registry := consul.NewRegistry()
rpcServer := server.NewServer(
server.Name(“registry-consul.service”),
server.Address(“0.0.0.0:8001”),
server.Registry(registry),
)
proto.RegisterHelloHandler(rpcServer, &Hello{})
service := micro.NewService(
micro.Server(rpcServer),
)