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

2023-05-16

目录

在rpc服务中添加配置

导入包:

在rpc服务中添加配置:

引入 Consul config 配置项

user.yml 文件

修改 user.go,将 rpc注册到consul

rpc的发现

在api服务中添加配置:

修改api/etc/user.yam 文件

修改 user.yml

修改api/user.go

启动rpc服务和api服务


在rpc服务中添加配置

导入包:

go get -u github.com/zeromicro/zero-contrib/zrpc/registry/consul

在rpc服务中添加配置:

进入项目代码 /gopath/gonivinck/code/go-zero-mall/

修改 service/user/rpc/internal/configrpc/internal/config 文件

引入 Consul config 配置项

vim /usr/src/code/go-zero-mall/service/user/rpc/internal/config/config.go

package config

import (
        "github.com/zeromicro/go-zero/core/logx"
        "github.com/zeromicro/go-zero/core/stores/cache"
        "github.com/zeromicro/go-zero/zrpc"
        "github.com/zeromicro/zero-contrib/zrpc/registry/consul"
)

type Config struct {
        zrpc.RpcServerConf

        Mysql struct {
                DataSource string
        }

        CacheRedis cache.CacheConf

        Salt string
        //引入consul配置
        Consul consul.Conf
        Log    logx.LogConf
}

user.yml 文件

vim /usr/src/code/go-zero-mall/service/user/rpc/etc/user.yml

Name: user.rpc
ListenOn: 0.0.0.0:9000

#Etcd:
#  Hosts:
#    - etcd:2379
#  Key: user.rpc
Consul:
  Host: 192.168.20.51:8500 #consul地址
  Key: user.rpc
Log:
  level: error

Mysql:
  DataSource: root:123456@tcp(mysql:3306)/mall?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai

CacheRedis:
  - Host: redis:6379
    Type: node
    Pass:

Salt: HWVOFkGgPTryzICwd7qnJaZR9KQ2i8xe

修改 user.go,将 rpc注册到consul

vim /usr/src/code/go-zero-mall/service/user/rpc/user.go

package main

import (
        "flag"
        "fmt"
        "github.com/zeromicro/zero-contrib/zrpc/registry/consul"

        "mall/service/user/rpc/internal/config"
        "mall/service/user/rpc/internal/server"
        "mall/service/user/rpc/internal/svc"
        "mall/service/user/rpc/types/user"

        "github.com/zeromicro/go-zero/core/conf"
        "github.com/zeromicro/go-zero/core/service"
        "github.com/zeromicro/go-zero/zrpc"
        "google.golang.org/grpc"
        "google.golang.org/grpc/reflection"
)

var configFile = flag.String("f", "etc/user.yaml", "the config file")

func main() {
        flag.Parse()

        var c config.Config
        conf.MustLoad(*configFile, &c)
        ctx := svc.NewServiceContext(c)
        svr := server.NewUserServer(ctx)

        s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
                user.RegisterUserServer(grpcServer, svr)

                if c.Mode == service.DevMode || c.Mode == service.TestMode {
                        reflection.Register(grpcServer)
                }
        })
        //将 rpc注册到consul
        _= consul.RegisterService(c.ListenOn,c.Consul)
        defer s.Stop()

        fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
        s.Start()
}

rpc的发现

在api服务中添加配置:

修改 api/internal/config config.go 文件

vim /usr/src/code/go-zero-mall/service/user/api/internal/config/config.go

package config

import (
        "github.com/zeromicro/go-zero/core/logx"
        "github.com/zeromicro/go-zero/rest"
        "github.com/zeromicro/go-zero/zrpc"
        "github.com/zeromicro/zero-contrib/zrpc/registry/consul"
)

type Config struct {
        rest.RestConf

        Auth struct {
                AccessSecret string
                AccessExpire int64
        }

        UserRpc zrpc.RpcClientConf
        Consul consul.Conf
        Log logx.LogConf
}

修改api/etc/user.yam 文件

Name: User
Host: 0.0.0.0
Port: 8000

Mysql:
  DataSource: root:123456@tcp(mysql:3306)/mall?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai

CacheRedis:
  - Host: redis:6379
    Pass:
    Type: node

Auth:
  AccessSecret: uOvKLmVfztaXGpNYd4Z0I1SiT7MweJhl
  AccessExpire: 86400

Log:
  Encoding: json
  Level: error
UserRpc:
  Target: consul://192.168.20.51:8500/user.rpc?wait=14s
Consul:
    Host: 192.168.20.51:8500
    Key: user.rpc
#  Etcd:
#    Hosts:
#      - etcd:2379
#    Key: user.rpc

修改 user.yml

添加一个UserRpc配置,去掉官方自带的Etcd配置

vim /usr/src/code/go-zero-mall/service/user/api/etc/user.yml

Name: User
Host: 0.0.0.0
Port: 8000

Mysql:
  DataSource: root:123456@tcp(mysql:3306)/mall?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai

CacheRedis:
  - Host: redis:6379
    Pass:
    Type: node

Auth:
  AccessSecret: uOvKLmVfztaXGpNYd4Z0I1SiT7MweJhl
  AccessExpire: 86400

Log:
  Encoding: json
  Level: error
UserRpc:
  Target: consul://192.168.20.51:8500/user.rpc?wait=14s
Consul:
    Host: 192.168.20.51:8500
    Key: user.rpc
#  Etcd:
#    Hosts:
#      - etcd:2379
#    Key: user.rpc

修改api/user.go

vim /usr/src/code/go-zero-mall/service/user/api/user.go


  
package main

import (
        "flag"
        "fmt"

        "mall/service/user/api/internal/config"
        "mall/service/user/api/internal/handler"
        "mall/service/user/api/internal/svc"

        "github.com/zeromicro/go-zero/core/conf"
        "github.com/zeromicro/go-zero/rest"
        _ "github.com/zeromicro/zero-contrib/zrpc/registry/consul"
)

var configFile = flag.String("f", "etc/user.yaml", "the config file")

func main() {
        flag.Parse()

        var c config.Config
        conf.MustLoad(*configFile, &c)

        ctx := svc.NewServiceContext(c)
        server := rest.MustNewServer(c.RestConf)
        defer server.Stop()

        handler.RegisterHandlers(server, ctx)

        fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
        server.Start()
}

启动rpc服务和api服务

可以看到rpc服务已经被注册和发现了


  
root@7ce3fbb23e76:/usr/src/code/go-zero-mall/service/user/rpc# pwd
/usr/src/code/go-zero-mall/service/user/rpc
root@7ce3fbb23e76:/usr/src/code/go-zero-mall/service/user/rpc#
root@7ce3fbb23e76:/usr/src/code/go-zero-mall/service/user/rpc# go run user.go -f etc/user.yaml
Starting rpc server at 0.0.0.0:9000...
{"@timestamp":"2022-10-21T01:56:11.694+08:00","caller":"stat/usage.go:61","content":"CPU: 175m, MEMORY: Alloc=2.2Mi, TotalAlloc=7.9Mi, Sys=14.8Mi, NumGC=3","level":"stat"}
{"@timestamp":"2022-10-21T01:56:11.699+08:00","caller":"load/sheddingstat.go:61","content":"(rpc) shedding_stat [1m], cpu: 175, total: 0, pass: 0, drop: 0","level":"stat"}
{"@timestamp":"2022-10-21T01:57:11.699+08:00","caller":"load/sheddingstat.go:61","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0","level":"stat"}
{"@timestamp":"2022-10-21T01:57:11.699+08:00","caller":"stat/usage.go:61","content":"CPU: 1m, MEMORY: Alloc=3.4Mi, TotalAlloc=11.0Mi, Sys=14.8Mi, NumGC=4","level":"stat"}

root@7ce3fbb23e76:/usr/src/code/go-zero-mall/service/user/api# pwd
/usr/src/code/go-zero-mall/service/user/api
root@7ce3fbb23e76:/usr/src/code/go-zero-mall/service/user/api# go run user.go -f etc/user.yaml
{"@timestamp":"2022-10-21T02:05:44.290+08:00","caller":"consul@v0.0.0-20220909060747-217517c21c16/resolver.go:76","content":"[Consul resolver] 1 endpoints fetched in(+wait) 1.557115ms for target={service='user.rpc' healthy='false' tag=''}","level":"info"}
Starting server at 0.0.0.0:8000...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go-zero使用consul作为注册中心 的相关文章

  • docker搭建consul集群

    目录 官方下载地址1 拉取 Consul 镜像2 启动consul主容器 xff08 搭建数据中心dc1 xff09 3 查询dc1中主容器IP地址4 启动其他容器并加入dc15 查看数据中心dc1节点6 启动consul主容器 xff08
  • X86_64 Ubuntu为树莓派zero(armv6)交叉编译tensorflow-lite

    警告 Tensorflow官方在2021年8月份废弃了通过Makefile构建tflite的方式 从Tensorflow 2 7 0开始 xff0c 官方只提供使用CMake或者Bazel构建tflite的支持 本教程正是基于Makefil
  • SpringCloud(五)Consul服务注册与发现

    SpringCloud xff08 四 xff09 zookeeper介绍及原理 xff1a https blog csdn net weixin 45606067 article details 108538357 Consul简介 是什
  • 解密5G新基建浪潮下的“智慧杆塔”缘何火热

    文章版权所有 未经授权请勿转载或使用 关于智慧杆塔并不算一个新概念或新领域 从早期的智慧路灯 到加载少量城市传感器或电子广告牌的智慧灯杆等 都属于智慧杆塔的早期概念或雏形 但近来笔者通过走访灯杆生产厂商发现 行业终于盼来了爆发的春天 智慧杆
  • Spring Cloud架构的各个组件的原理分析

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • 如何引导机器?如何面临人机结合?《​人工智能与人类未来》

    微信公众号 乐生活与爱 公众号曾转载过蔡恒进教授的奇文 意识如何演化 机器何时有自我意识 附着与隧通 心智的工作模式 值得反复也读 我上周听了由北京大学博古睿研究中心 中国人民大学哲学院 中国人民大学哲学与认知科学交叉平台 服务器艺术联合主
  • 互联网小拼,这一生的故事,你要看看吗

    前言 谁也不知道 今天竟然是我的最后一天加班 我叫小拼 我来自农村 一个国家级贫困县 原以为会在老家种田一辈子 谁曾想 考上了一所大学 学了计算机专业改变了我的一生 大学毕业以前都没什么好说的 九年义务教育 再加高中三年 大学四年 毕业后
  • consul学习与常用命令和使用教程

    目录 consul是什么 常用命令 API 实例1 新建服务API 注册服务 查询服务 consul是什么 Consul是分布式的 高可用的 可横向扩展的用于实现分布式系统的服务发现与配置 consul就是提供服务发现的工具 做服务发现的框
  • 如果被少于五个连续零包围,则将向量中的零更改为一

    我有一个向量0s and 1s 并想要识别字符串所在的索引0s 被包围1s 如果数量0之间的1s 小于或等于 5 我想将这些零更改为1s 这是一个例子 gt x lt c 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0
  • 在Java中,如何删除float中的所有0?

    我想这样改变浮动 10 5000 gt 10 5 10 0000 gt 10 如何删除小数点后的所有零 并将其更改为浮点数 如果有非零 或整数 如果只有零 提前致谢 为什么不尝试正则表达式呢 new Float 10 25000f toSt
  • 使用过滤功能时,如何按原样返回空白单元格而不是打印为零

    在使用过滤功能时参考图像中显示的数据并获取返回值 如何在使用过滤功能时按原样返回空白单元格而不是打印为零 FILTER A2 C13 A2 A13 E1 在使用过滤功能时参考图像中显示的数据并获取返回值 如何在使用过滤功能时按原样返回空白单
  • 如何删除具有任何零值的行

    我有一个问题需要解决如何删除 R 中具有零值的行 另一方面 我可以使用na omit 删除所有 NA 值或使用complete cases 删除包含 NA 值的行 有谁知道如何删除 R 中具有零值的行 例如 Before DateTime
  • Java在浮点运算中保持尾随0

    代码 Float f Float parseFloat 1 80 System out println f prints 1 8 在屏幕上 我需要将 0 保留在浮点值 Float f 中以进行某些验证 我该怎么做呢 你正在混淆一个数值和它的
  • 我的 docker 镜像是否需要自己的 consul 客户端实例?

    我有一个 dockerized 应用程序 分为几个容器 一些前端和后端服务器 负载均衡器 mysql elasticsearch 等 负载均衡器的配置需要知道哪些容器已启动 因此我使用 Consul 服务发现来注册服务 但我不太确定在每个
  • 数字 0 在二进制浮点数格式中是什么样子?

    浮点格式 IEEE 有 32 位 第 1 位用于符号 之后 8 位用于有偏差指数 最后 23 位用于尾数 在这个尾数中 第一个 1 始终是 1 始终隐藏 这引出了我的问题 数字 0 在这种格式中是什么样子的 因为如果指数为 0 则该数字将始
  • 如果整数以前导零开头,为什么 JSON 无效?

    我正在将一些 JSON 文件导入到 Parse com 项目中 但不断收到错误 无效的键 值对 它指出有一个意想不到的 8 这是我的 JSON 的示例 Manufacturer Manufacturer Model THIS IS A ST
  • Hibernate 在 ManyToOne 关系中处理长 0 值而不是 NULL

    我使用 Hibernate 来访问旧数据库 对于某些表 不强制执行父子引用完整性 并且long对于子表中的某些 父 列 使用 0 值代替 NULL 以表示 无父 我仍然想使用这些关系 ManyToOne and OneToMany字段 但得
  • Harris & Stephens 角点检测算法:行列式始终为 0(零)

    作为我的学士论文的一部分 我正在尝试使用 Harris 和 Stephens 算法实现角点检测器 组合角点和边缘检测器 http www bmva org bmvc 1988 avc 88 023 pdf 我确实计算过 使用 sobel 滤
  • PHP 在单位数字之前预先添加前导零,动态 [重复]

    这个问题在这里已经有答案了 PHP 是否有一种快速 即时的方法来测试单个字符串 然后在前面添加前导零 Example year 11 month 4 stamp year add single zero if needed month Im
  • 为什么浮点数有符号零?

    为什么双打有 0也 0 其背景和意义是什么 0 通常 被视为0 当一个negative浮点数非常接近零 可以考虑0 要明确的是 我指的是算术下溢 http en wikipedia org wiki Arithmetic underflow

随机推荐

  • (Taro篇)如何自定义小程序Swiper面板指示点的样式

    效果图 轮播组件jsx span class token keyword import span span class token punctuation span Component span class token punctuatio
  • 如何使用Docker搭建Heimdall-打造你自己的专属浏览器首页

    一 介绍 Heimdall是一种以简单的方式组织所有指向您最常用的网站和 Web 应用程序的链接的方法 简单是 Heimdall 的关键 它甚至可以使用 Google Bing 或 DuckDuckGo 包含一个搜索栏 二 安装环境 系统
  • CentOS8中使用Libreoffice7.3遇到的问题

    首先借鉴了这篇文章对Libreoffice进行了下载和安装 https blog csdn net UnicornRe article details 119677482 在本地的centos7环境中测试word转pdf是没有问题的 xff
  • UIImageView的基本使用

    UIImageView作为iOS开发里基本控件 xff0c 是我们第四个需要学习的 下面我来为大家介绍一下UIImageView的一些常用属性和它们的用法 这里附上UI控件演示的源码地址 xff1a https github com LOL
  • 如何使用Docker搭建PhotoPrism - 打造基于AI私有化的个人相册系统

    一 简介 PhotoPrism 是一款由人工智能驱动的应用程序 xff0c 用于浏览 组织和分享您的照片集 它利用最新技术自动标记和查找图片 您可以在家里 私人服务器或云端运行它 PhotoPrism对很多设备提供了支持 xff0c 包括M
  • Power Keys - 彻底解放电脑使用效率

    简介 Power Keys 是一款十分强大的 快速启动 系统辅助工具 xff0c 支持 Windows 与 macOS xff0c 它可以利用 F1 F12 43 字母或数字 来启动程序或打开网页等操作 xff0c 还拥有类似 VIM 编辑
  • Windows安装Gradle详细图文教程

    简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具 它使用一种基于Groovy的特定领域语言 DSL 来声明项目设置 xff0c 也增加了基于Kotlin语言的kotlin based D
  • CentOS7防火墙(Firewalld篇)

    一 防火墙设置 1 启用防火墙 systemctl start firewalld 2 关闭防火墙 systemctl stop firewalld 3 查看状态 systemctl status firewalld 4 开机启用防火墙 s
  • 9.图--拓补排序

    1 概念 无环图 xff1a 活动 2 拓补序列 xff1a 3 拓补排序 xff1a 对有向图构造拓补序列的过程 1 1 例子 比如有下表 xff0c 要学习 汇编语言 就需要先学习C1和C13课程 要将表画为AOV网图 xff1a 拓补
  • wxHelper使用教程

    方法介绍 前言1 工具介绍 x1f517 1 1 环境介绍1 2 功能介绍1 3 源码地址 2 使用说明 x1f517 2 1 Server说明2 2 引入jar包 3 方法介绍 x1f517 1 服务器配置 token验证 2 自定义菜单
  • go-mysql-elasticsearch 使用

    文档 github 链接 GitHub go mysql org go mysql elasticsearch Sync MySQL data into elasticsearch 参考博客 注意事项 go mysql elasticsea
  • docker快速搭建zookeeper集群

    一 准备工作 1 拉取zookeeper镜像 docker pull zookeeper docker tag docker io zookeeper zookeeper docker rmi docker io zookeeper 2 安
  • kafka优化配置,Kafka 的消费者客户端详解

    目录 前言 一 消费者与消费者组 1 1 图解消费者模型 1 2 消息投递模式 二 Kafka 消费者的应用 2 1 消费者客户端演示 2 2 必要参数配置 2 3 订阅主题与分区 三 消费位移 3 1 什么是偏移量 3 2 自动提交偏移量
  • php mysql mysqli取出的数据都成了string

    mysqli是可以获取数据库中的数据类型的 xff0c 但是默认并没有开启 需要设置option参数 MYSQLI OPT INT AND FLOAT NATIVE function construct database username
  • centOS7下安装GUI图形界面

    1 如何在centOS7下安装GUI图形界面 当你安装centOS7服务器版本的时候 xff0c 系统默认是不会安装GUI的图形界面程序 xff0c 这个需要手动安装CentOS7 Gnome GUI包 2 在系统下使用命令安装gnome图
  • nginx反向代理配置和文件上传ab压测

    安装nginx apt get install y nginx 配置 nginx 查看自己服务器ip curl ip sb vim etc nginx conf d cdn conf server listen 80 server name
  • docker 日常命令小笔记

    目录 常见命令 启动并启动日志 进入容器 dockerfiles apk 命令 编辑网卡centos 重启网卡 查看防火墙的状态 关闭防火墙 xff1a 查看网络ip 查看端口 杀端口 查找php ini位置 安装bcmath扩展 安装ac
  • Wsl2 ubuntu 配置git 阿里云codeup

    目录 创建一个跟你windows git使用相同的用户名 特别重要 配置git 用户名和邮箱 配置阿里云codeup 拉取仓库提示文件权限问题 给用户目录权限 配置项目文件别名 key load public invalid format
  • Docker tarsgo

    目录 参考 xff1a mysql镜像安装 一 安装镜像 二 创建mysql容器 使用 tarscloud framework 部署框架 拉取最新版本镜像 启动镜像 目前只考虑了 linux 上 时间和本机同步 目录说明 参数解释 Dock
  • go-zero使用consul作为注册中心

    目录 在rpc服务中添加配置 导入包 xff1a 在rpc服务中添加配置 xff1a 引入 Consul config 配置项 user yml 文件 修改 user go 将 rpc注册到consul rpc的发现 在api服务中添加配置