go-zero使用consul作为注册中心

1,065 阅读1分钟

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上查看到对应的服务

image.png

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"

参考文档:

github.com/zeromicro/z…