纯技术

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

go-zero 默认使用etcd作为注册中心,如果我们的业务使用的consul, 可以使用zero-contrib中的consul包进行替代 文件位置:ect/**.yaml 增加consul配置 服务启动后即可在conusl/ui上查看到…

4 分钟阅读
精选技术记录
持续迭代更新
Share

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…


本文同步自掘金

如果发现内容有误或需要更新,请访问掘金原文进行查看。

Share

如果这类内容对你有帮助

这里放了一个阿里云 AIGC 活动入口。如果你本来就有相关需求,可以顺手了解;如果产生推广收益,我会优先用于支付服务器、域名和网站维护费用。

看看阿里云 AIGC 活动

相关文章

纯技术2025年8月21日

为什么有的人学了很多年的编程,还是只会【增删改查】?

为什么你写了多年代码,技术栈还停留在"增删改查"? 我们不妨从一个常见的开发者画像开始:工作数年,日常任务是理解需求、实现业务逻辑、提供数据接口。在熟悉的框架下,每天熟练地进行着数据库的增、删、改、查(CURD)操作,周而复始。 这套流程看…

纯技术2023年12月21日

Golang-常用限流算法实现

常用的限流算法有一下4中实现方式: 令牌桶 漏桶 计数器 滑动窗口 令牌桶以恒定的速度向桶里加入令牌,桶满了则不再加入令牌。当服务收到请求时尝试从桶中取出一个令牌,如果可以获取到令牌,则继续执行后续的业务,否则返回超限错误码或对应的错误页面…

纯技术2023年12月21日

go-zero:zrpc

zrpc是go-zero的rpc部分,简单易用可直接用于生产的企业级rpc框架 zRPC底层依赖gRPC,内置了服务注册、负载均衡、拦截器等模块,其中还包括自适应降载,自适应熔断,限流等微服务治理方案 zRPC主要有以下几个模块组成: di…