Go微服务: Grpc服务注册在Consul的示例(非Go-Micro)

gRPC入门系列之4-consul服务注册与发现 在生产环境中,除非是直直接在固定ip的物理机/虚拟机上运行,否则ip地址是不固定的,而且服务的数量也是不固定的,这时候就需要服务注册与发现了。需要说明的是:在现实中,consul服务的地址可能是通过配置文件,或者配置中心获取的,不会写死在代码中。在微服务架构中,服务的注册与发现是一个非常重要的组件,它可以让服务之间的调用更加简单,也可以让服务更加健壮。在上面的代码中,我们通过consul客户端获取服务列表,然后随机选择一个服务节点,调用服务。根据服务列表返回的节点,随机选择一个节点,调用服务。 阅读详情

概述

  • 现在,我们使用consul客户端的api来把GRPC服务实现注册到consul上,非Go-Micro的形式
  • 其实,consul官方提供了对应的接口调用来实现,golang中的consul/api包对其进行了封装
  • 我们使用consul/api来进行展示

目录结构

gitee.com/go-micro-services/consul-grpc
	├── protos
	│     └── users
	│           ├── users.proto
	│           ├── users.pb.go
	│           └── users_grpc.pb.go
	├── main.go
	└── go.mod

1 ) protos 相关

2 )main.go

package main

import (
	"context"
	"fmt"
	"net"
	"strconv"

	"gitee.com/go-micro-services/consul-grpc/protos/users"
	"github.com/hashicorp/consul/api"
	"google.golang.org/grpc"
	"google.golang.org/grpc/health"
	"google.golang.org/grpc/health/grpc_health_v1"
)

// 定义通用度变量, 这里以后可以做成配置,仅做简单举例
var (
	host    string = "127.0.0.1"
	port    int    = 9000
	portStr string = strconv.Itoa(port)
	address        = host + ":" + portStr
)

type Users struct {
	users.UnimplementedUsersServer
}

func (g Users) AddUser(c context.Context, req *users.AddUserReq) (*users.AddUserRes, error) {
	fmt.Println(req)
	return &users.AddUserRes{
		Success: true,
		Message: "增加用户成功",
	}, nil
}

func (g Users) GetUser(c context.Context, req *users.GetUserReq) (*users.GetUserRes, error) {
	var tempList []*users.UsersModel
	for i := 0; i < 10; i++ {
		tempList = append(tempList, &users.UsersModel{
			Name: "商品" + strconv.Itoa(i),
			Age:  int32(i),
		})
	}
	return &users.GetUserRes{
		UserList: tempList,
	}, nil
}

func main() {
	// ----------------------- 1. 注册consul服务 -----------------------
	// 1、初始化consul配置
	consulConfig := api.DefaultConfig()
	consulConfig.Address = "127.0.0.1:8500" // consul服务的默认地址可省略,如果不是本机,需要补充

	// 2、获取consul操作对象
	consulClient, _ := api.NewClient(consulConfig)

	// 3、配置注册服务的参数
	agentService := api.AgentServiceRegistration{
		ID:      "uuu-1", // 不要重复
		Tags:    []string{"test"},
		Name:    "Users-Service",
		Port:    port, // 和下面 grpc server 的配置相同, 否则就连接不上微服务
		Address: host, // 同上
		Check: &api.AgentServiceCheck{
			GRPC:                           address,
			Timeout:                        "3s",
			Interval:                       "1s",
			DeregisterCriticalServiceAfter: "5s",
		},
	}
	//  4、注册服务到consul上
	consulClient.Agent().ServiceRegister(&agentService)
	// ----------------------- 2. 注册GRPC -----------------------
	// 1、获取Grpc示例
	grpcServer := grpc.NewServer()
	// 2、注册服务
	users.RegisterUsersServer(grpcServer, &Users{})
	// 3. 健康检查
	grpc_health_v1.RegisterHealthServer(grpcServer, health.NewServer())
	// 4、监听端口
	listener, err := net.Listen("tcp", address)
	if err != nil {
		fmt.Println(err)
	}
	// 5、退出服务的时候关闭监听
	defer listener.Close()
	// 6、启动服务
	grpcServer.Serve(listener)
}
  • 主要关注 main 函数中的注册和健康检查的配置

运行效果

  • 可见,运行和健康检查都正常

其他

Go 服务注册--consul 此文详细介绍使用consul作为注册中心,实现两个服务之间的通信,这里只用了点到点通信。 1 .安装consul - 注册中心 服务注册中心我们选择consul: mac:brew install consul windows:直接官网下载consul.exe可执行程序 运行consul:启动Consul agent的开发模式: consul agent -dev 该命令快速... 阅读详情

相关推荐

go微服务-go-micro框架介绍

go-micro框架介绍 文章目录go-micro框架介绍一、micro框架介绍1.1、背景1.2、概述1.3、micro组成1.4、工具包介绍1.4.1、API1.4.2、Web1.4.3、Sidecar1.4.4、Bot1.4.5、CLI1.4.6、Go-Micro1.5、Go-Micro特性1.6、环境安装1.6.1、安装consul1.6.2、安装protobuf和依赖1.6.3、micro工具包安装(可选择)1.6.4、1Go-micro安装二、创建微服务2.1、服务的定义2.2、初始化服务实例

qq_49723651的博客 4612

微服务 — gRPC+Consul项目实践

微服务 — gRPC+Consul项目实践 1、基于gRPC搭建采集类服务 2、基于Consul实现服务发现

xuanyu.li的博客 822

微服务:go-microv4服务注册与发现+consul服务

因为项目需要,要使用go-micro框架,将已经实现的网站功能转到微服务里面实现,所以经过了许许多多踩坑之后终于实现了初步的demo。本文会记录实现过程和中间遇到的问题,希望能帮助到大家。

qq_34106714的博客 1134

consul 与 grpc 结合实现服务注册发现及远程调用

1 consul 下载与初体验 下载对应版本的 consul (Mac M1 为例) https://www.consul.io/downloads # 查看支持的型号 uname -m 配置 consul 到环境变量 image-20220530094156506.png 2 consul 使用 2.1 常用命令解释 consul agent -bind=0.0.0....

攻城老湿的博客 1596

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6561

图像修复黑科技:对比BM3D/DnCNN等5种去噪器在PNP框架中的实战效果

本文深度评测了BM3D、DnCNN等五款主流去噪器在即插即用(PnP)优化框架中的实战表现。通过量化指标、视觉对比及超分等泛化任务测试,揭示了深度学习模型在性能与收敛速度上的优势,并为不同应用场景提供了选型指南与工程化建议。

weixin_29065959的博客 371

[golang 微服务] 6. GRPC微服务集群+Consul集群+grpc-consul-resolver案例演示

GRPC微服务集群+Consul集群+grpc-consul-resolver案例演示

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 3544

AtmelStudio 7 ASF库学习笔记一:新建工程、配置时钟、下载程序和查看官方例程

由于需要学习一下atmel的atsaml 系列,使用AtmelStudio 7开发,之前主要用STM32,现在看到Atmel的库函数,其实是有些类相似的。 ASF3的库对应ST的标准库。ASF4对应ST的HAL库,Ateml Start对应STM32CubeMX。但在这里还是用ASF3来开发,因为Ateml Start还不支持我的这个芯片,而且和STM32的HAL库类似,ASF4为了好移植都是底...

yxy244的博客 8658

基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现

0.简介0.1 什么是 ConsulConsul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。这里所谓的服务,不仅仅包括常用的 Api 这些...

dotNET跨平台 1944

如何用 Python 实现自动化测试?详细步骤和代码示例

Python自动化测试实战指南 本文系统介绍了使用Python构建自动化测试体系的完整方案。主要内容包括: 环境搭建:Python 3.8+虚拟环境配置,安装pytest、Selenium等核心测试库 分层测试实现: 单元测试:通过计算器示例演示pytest断言和异常测试 API测试:使用requests库进行RESTful接口验证 UI测试:Selenium WebDriver实现网页交互测试 高级特性: 使用fixture管理测试依赖 参数化实现数据驱动测试 生成HTML和Allure测试报告 GitH

m0_64424835的博客 453

【ROS2实体机械臂驱动】封装珞石ROS2驱动库ros2_rokae_driver_lib

这一篇文章将封装为,和之前一篇文章《ROS2 编译、打包、封装三方库(Knet为例)_ros插件编译成静态库-优快云博客》写的封装,区别在于优化了cmake dependencies和include等属性和宏定义,同时对于多库内部依赖的情况做了特定处理,更加方便外部调用。其中珞石的编译参考博主之前的文章rokae xCoreSDK C++测试使用,这里不再做赘述。通过这篇文章对于如何打包机械臂厂家提供的三方库做了进一步说明,方便用于不同机械臂厂家的三方库封装调用。!!

机器人梦想家 Bing Lee 1398

[golang 微服务] 7. go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 6967

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 407

[Go 微服务] go-micro + consul 的使用

go-micro + consul 的使用

959 2044

【WiFi】T830 MT7992 WMM测试修改操作说明

WiFi WMM(Wi-Fi Multimedia)是Wi-Fi联盟推出的一项技术,用于优化无线网络中的多媒体内容传输。WMM通过优先处理不同类型的数据流来改善网络性能,特别是在网络拥堵时。:WMM通过提供服务质量支持,确保语音、视频和其他多媒体应用在无线网络中获得优先处理。这有助于减少延迟和抖动,改善用户体验。:WMM将数据流分为四个优先级队列:语音、视频、最佳效果(Best Effort)和背景(Background)。语音和视频流通常被赋予更高的优先级,以确保它们在网络中得到及时传输。

wgl307293845的博客 1022

(王道408考研操作系统)第一章计算机系统概述-第三节2:中断和异常

注意!!! 本节内容和《计算机组成原理》中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分内容会借用上述文章 文章目录一:中断和异常的基本概念(1)中断和异常的定义 一:中断和异常的基本概念 在操作系统引入核心态和用户态这两种工作状态后,就需要考虑两种状态之间是如何切换的。 操作系统内核工作在核心态,用户程序工作在用户态,系统不允许用户程序使用核心态的功能,但是用户程序为了完成某些操作又必须使用这些功能

快乐江湖的博客 3535

【启程Golang之旅】Go-Micro框架的高效开发技巧

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了解这门语言的基础知识和实用技巧。

ztK63LrD的博客 1831

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

go-micro+grpc+web+consul微服务基于linux操作系统

这些天学习go-micro不断的踩坑,才有了这篇文章,大概是目前使用micro+grpc+consul+web最新的配置。 首先为了和我同步,避免配置不相同,先说明一下我的环境 go version go1.14.12 linux/amd64 micro version 1.18.0 Consul 0.6.4.dev Consul Protocol: 3 (Understands back to: 1) 系统是ubuntu-linux 可以根据我的版本进行配置,可以大概率避免出错 第一步开启consul 首

Xiang_lhh的博客 2398

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

go语言微服务项目,高级篇--02micro-consul-grpc-gomicro框架

作业:grpc 远程调用。 服务端 grpc 初始一个 grpc 对象 注册服务 设置监听, 指定 IP、port 启动服务。---- serve() 客户端 grpc 连接 grpc 服务 给 grpc.Dial() 传参2 : grpc.WithInsecure() . 表示:以安全的方式操作。 初始化 grpc 客户端 调用远程服务。 给 grpc.SayHello() 传参1: context.TODO() 表示:空对象。 go-mirco micro 简介 go-

无尘的躺坑记录 776

Go - Micro微服务框架实践 - 常见问题

目录 什么是 Micro ? Micro是开源的 社区 生态系统 该从何入手 micro有哪些使用者 如何才能使用micro 除了Consul,可以使用其它的注册中心吗 Etcd 零依赖 Micro可以在哪些环境运行 API、Web、SRV 服务之间的区别是什么 API 服务 Web 服务 SRV 服务 Micro的性能如何 Micro支持gRPC吗 Mi...

延宝小白马的博客 2459

[golang 微服务] 8.go-micro的负载均衡操作,go Web框(Gin,Beego)调用go-micro微服务

go-micro的负载均衡操作,go Web框(Gin,Beego)调用go-micro微服务以及Gin,Beego创建微服务客户端操作,以及Gin, Beego框架调用微服务go-micro案例

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 2021

Go-Micro微服务框架

什么是 Micro ? Micro 是一个着眼于分布式系统开发的微服务生态系统。 Micro 是框架 Micro 也是工具集 Micro 有社区 Micro 还是一个生态系统 Micro是开源的 Micro由开源的库与工具组成,旨在辅助微服务开发。 go-micro - 基于Go语言的可插拔RPC微服务开发框架;包含服务发现、RPC客户/服务端、广播/订阅机制等等。 go-plug...

runner668的博客 572

go grpc测试_我用 php 调通了 go-micro 的grpc服务

我们都知道搞微服务,除了拥有完美生态的java Spring Cloud那套,golang的微服务架构也是非常理想的。而且golang相比java 的臃肿内存占用更小,golang引入了协程并发粒度相比java的多线程先对更小,更可控,并发学习成本更低,不得不说golang就是趋势。 但是相对国内来说,使用golang中小企业较少,而大多数从14,15年开始的中小型公司一直使用php,为了统一技术...

weixin_39750854的博客 254

【Go】微服务框架总结

Go-Mirco框架 go-zero微服务框架 1. zRPC使用 参考go-zero 文档 查看server注册 ETCDCTL_API=3 etcdctl get hello.rpc --prefix 显示服务已经注册 2. 接口限流 periodlimit 2.1 滑动窗口限流 接口限流实现 redis + lua 而在一个分布式系统中,存在多个微服务提供服务。所以当瞬间的流量同时访问同一个资源,如何让计数器在分布式系统中正常计数?同时在计算资源访问时,可能会涉及多个计算,如何保证计算的原子性?

王大阳的博客 3633

go微服务学习 go-micro框架(一)

本节简单介绍micro和consul,具体使用放在下一节 1 micro简介 在了解go-micro之前,我们先来了解一下什么是micro。 Micro解决了在云内外构建分布式系统的关键要求。它利用微服务体系结构模式,并提供一组作为平台构建基块的服务. Micro 处理分布式系统的复杂性,并提供更简单的可编程抽象. Micro是一个专注于简化分布式系统开发的微服务生态系统。由开源库和工具组成。主要包含以下几种库: go-micro用于编写微服务的可插入Go-RPC框架; 服务发现,客户端/服务器rpc,

weixin_44336181的博客 1719

C++GO语言微服务和服务发现

C++GO语言微服务和服务发现

qq_27302885的博客 1588
上一篇: Go微服务: Http服务注册在Consul的示例(非Go-Micro)
下一篇: Go微服务: Nacos的搭建和基础API的使用
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值