go-zero 默认使用etcd作为注册中心,如果我们的业务使用的consul, 可以使用zero-contrib中的consul包进行替代
rpc
1. install consul module
go get -u github.com/zeromicro/zero-contrib/zrpc/registry/consul
2.修改rpc服务的配置文件
文件位置:ect/**.yaml
Name: transform.rpc
ListenOn: 0.0.0.0:8080
#Etcd:
# Hosts:
# - 127.0.0.1:2379
# Key: transform.rpc
Consul:
Host: 127.0.0.1:8500
Key: transform.rpc
Meta:
Protocol: grpc
Tag:
- tag
- rpc
3. 修改 config/config.go文件
增加consul配置
package config
import (
"github.com/zeromicro/go-zero/zrpc"
"github.com/zeromicro/zero-contrib/zrpc/registry/consul"
)
type Config struct {
zrpc.RpcServerConf
Consul consul.Conf
}
4. main.go 增加 register逻辑
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
transform.RegisterTransformServer(grpcServer, server.NewTransformServer(ctx))
if c.Mode == service.DevMode || c.Mode == service.TestMode {
reflection.Register(grpcServer)
}
})
defer s.Stop()
// register service 2 consul
_ = consul.RegisterService(c.ListenOn, c.Consul)
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
s.Start()
}
服务启动后即可在conusl/ui上查看到对应的服务
api
服务调用方需要进行对应的修改
yaml
Name: shorturl-api
Host: 0.0.0.0
Port: 8888
Transform:
Target: consul://localhost:8500/transform.rpc?wait=14s
#Transform:
# Etcd:
# Hosts:
# - localhost:8500
# Key: transform.rpc
main.go
import 增加
import _ "github.com/zeromicro/zero-contrib/zrpc/registry/consul"