【go-micro实践】健康检查

go-micro中使用consul 上节我们在启动go-micro服务时,可以看到使用的服务注册是mdns。这节来了解下如何使用consul。默认的服务发现是在同一台机器上,在生产环境下,服务与服务发现部署到同一机器,这不是个很好的实践。所以把consul机器独立出来就很有必要。 下面以Go Micro框架文章中的服务为例,编写一个go-micro服务。服务端microserver_consul.go文件 package main ... 阅读详情

github完整代码地址
个人博客

服务健康检查

在微服务架构中,每个服务都会存在多个实例,可能部署在不同的主机中。因为网络或者主机等不确定因素,每个服务都可能会出现故障。我们需要能够监控每个服务实例的健康状态,当一个服务故障时,及时将它从注册中心删除。

实现

micro提供两个方法可以直接实现健康检查功能

micro.RegisterTTL(time.Second*30),
micro.RegisterInterval(time.Second*20),

Interval就是间隔多久服务会重新注册
TTL就是注册服务的过期时间,如果服务挂了,超过过期时间后,注册中心也会将服务删除

micro内部服务注册的流程

当我们执行service.Run() 时内部会执行Start()
在这里插入图片描述
在Start函数中又会执行s.opts.Server.Start(),方法的实现在go-micro/server/rpc_server.go中。
我们跳转到内部server的Start方法
在这里插入图片描述
可以发现micro使用一个定时器按照间隔时间去自动重新注册。当服务意外故障,无法向注册中心重新注册时,如果超过了设定的TTL时间,注册中心就会将服务删除。

修改源码

	service := grpc.NewService(
		micro.Name("go.micro.srv.hello"),
		micro.WrapHandler(ocplugin.NewHandlerWrapper(t)),
+		micro.RegisterTTL(time.Second*15),
+		micro.RegisterInterval(time.Second*10),
		// micro.Version("latest"),
	)
service := web.NewService(
		web.Name(name),
		web.Version("lastest"),
+		web.RegisterTTL(time.Second*15),
+		web.RegisterInterval(time.Second*10),
		web.MicroService(grpc.NewService()),
	)

项目完整代码地址

Go-health-一个用于Go应用易于使用可扩展的健康检查库 health - 一个用于Go应用易于使用、可扩展的健康检查库。 立即下载

相关推荐

Go-healthcheck-一个用于Go服务的简单可扩展RESTfulHealthCheckAPI实现

healthcheck - 一个用于Go服务的简单可扩展RESTful Health Check API实现

Go 应用健康检查库 Health-Go 使用教程

Go 应用健康检查库 Health-Go 使用教程 1. 项目介绍 Health-Go 是一个为 Go 应用提供基础健康检查功能的库。它可以监控和检查应用中各种服务(如 RabbitMQ、PostgreSQL、Redis、HTTP、MongoDB、MySQL、gRPC、Memcached 和 InfluxDB 等)的健康状态。通过 Health-Go,开发者可以轻松实现应用的健康检查,确保应用在运...

gitblog_00198的博客 972

Cadence学习之路(六)元器件封装绘制

使用Allegro PCB Designer绘制元器件封装

qq_46757048的博客 1万+

【go语言微服务实践】#5-go-micro实现JWT认证

线上答题系统,微服务架构的小小实践,项目代码 一、服务认证概述   处于安全和保密要求,常常要对API的请求进行鉴权。目前常见的鉴权的方法有JWT、OAuth2.0、OpenID等。我们系统选用的是比较简便的JWT方式。请求端web应用,使用beego框架,服务端是对外提供API的微服务,使用go-micro框架。客户端和服务器端使用RPC(远程过程调用)的方式进行API的调用。因此我们要实现...

LittleRong_G的博客 1453

避坑指南:群晖DSM 7.X挂载NTFS硬盘,为什么你的SATA口不行?从原理到实战一次讲清

本文深入解析群晖DSM 7.X系统挂载NTFS硬盘的底层原理与实战排查方法,揭示SATA接口权限配置的关键参数(如esataportcfg和internalportcfg),并提供安全修改端口配置的详细步骤。针对不同型号群晖NAS的配置差异,给出替代方案与常见故障排查技巧,帮助用户解决NTFS硬盘挂载问题。

weixin_26757925的博客 257

量化平台深度测评:聚宽 / 米筐 / 迅投 QMT 对比分析

本文对比测评国内主流量化交易平台聚宽、米筐和迅投QMT,从回测性能、实盘稳定性和高级功能三方面展开分析。测试显示:聚宽在低频策略回测中效率最高(128秒),米筐次之;迅投QMT凭借C++直连架构实现最低延迟(150ms)和最高订单撤销成功率(98.5%)。平台特色方面,QMT的智能拆单算法可减少25%滑点损失,聚宽的因子库支持版本控制和缓存复用。建议低频策略选聚宽,高频交易选QMT,团队协作优先考虑聚宽。测试数据均来自合规实盘环境,建议根据策略特性进行试用验证。

tianchi2009123的博客 7384

【微服务记录】用go-micro编写微服务

1 用工具micro快速生成服务模板 go-micro提供了一个命令行工具micro dotzdeMacBook-Pro-2:foo dotz$ micro NAME: micro - A microservice toolkit USAGE: micro [global options] command [command options] [arguments...] ...

idwtwt的专栏 1099

YOLOv11改进策略【Backbone/主干网络】|替换HGNetV2骨干,包含RT-DETR中的l、x模型

本文记录的是基于HGNetv2的YOLOv11目标检测改进方法研究。本文利用HGNetv2替换YOLOv11的骨干网络,HGNetv2 通过其 GPU 推理友好的 3×3 标准卷积和层次化 HG Block 结构,能够为骨干网络提供高效且完整的特征提取能力。并且其中的和可在降低计算量的同时丰富特征表达,增强对多尺度目标特征的捕获能力,进而提高模型精度。本文配置了原论文中rtdetr-lrtdetr-x,以满足不同算力和检测精度的需求。

Limiiiing的博客 673

go轻量级分布式与微服务

本节为go轻量级分布式与微服务,主要讲解go语言在轻量级分布式与微服务方面的一些应用,包括爬虫、多线程设计模式、mapreduce等。

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 419

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。

盼小辉丶的博客 3万+

go_zero之健康监测&&健康指标信息

然而我们使用框架的时候,怎么才能知道我们启动的服务的健康状态和资源使用情况,当然框架给我们已经想好了解决方案。下面和猿猿一起看看吧···

qq_52395816的博客 1790

基于STC8A8K64S4A12的掉电唤醒定时器应用,极大降低产品功耗

通过合理的配置和编程,我们可以充分发挥单片机的功能,实现能效优化和电池寿命延长的目标。其中,掉电唤醒定时器是其一项重要功能,可以在系统处于睡眠状态时通过定时器的计时功能进行唤醒,从而实现对系统功耗的有效控制。使用STC8A8K64S4A12的掉电唤醒定时器功能,我们可以在不影响系统正常工作的情况下,大大降低产品的功耗。通过以上的代码,我们实现了一个简单的掉电唤醒定时器功能。当系统进入睡眠模式后,定时器开始计时,到达预设的唤醒时间后,定时器中断被触发,系统从睡眠模式唤醒,执行相应的操作。

CodeSageX的博客 1091

学习 go-micro 框架

go-micro 学习 服务发现-微服务开发中的核心 有服务发现后,client、server工作流程 每个server启动时,都将自己的ip、port和服务名注册给“服务发现” 当client向服务发现发起服务请求时,“服务发现”会自动找一个可以用的服务。将其IP/port服务名返回给client。 client再借助服务发现,访问server。 服务发现的种类: consul:常用语go-micro中。 mdns:go-mirco中默认自带的服务发现。 etcd:k8s内嵌的服务发现。 consul

qq_42717902的博客 391

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1120

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Go夜读服务发现机制:Consul与etcd的完整选型指南

在微服务架构中,服务发现是保障系统弹性和可靠性的核心组件。Go夜读项目(night-reading-go)通过深入分析Consul与etcd两种主流服务发现工具,为开发者提供了清晰的选型依据。本文将从技术特性、适用场景和性能表现三个维度,帮助你快速掌握这两款工具的核心差异与最佳实践。 ## 服务发现核心原理与选型挑战 服务发现作为微服务通信的"导航系统",主要解决三个关键问题:服务注册、健康检

gitblog_00100的博客 773

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

ztK63LrD的博客 1830

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

go-micro框架

在了解go-micro之前,我们先来了解一下什么是micro。 Micro是一个专注于简化分布式系统开发的微服务生态系统。由开源库和工具组成。主要包含以下几种库: **go-micro:**用于编写微服务的可插入Go-RPC框架; 服务发现,客户端/服务器rpc,pub/sub等,是整个Micro的核心。 默认使用mdns做服务发现,可以在插件中替换成consul,etcd,k8s等 ...

bigfaceCatzzZ的博客 1460

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

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

weixin_44336181的博客 1719

Golang微服务Micro学习-运行第一个微服务启程测试

1. 相关简介 Micro:Micro是一个可插拔的微服务工具包,官方释义为:Micro是云原生开发的工具包。它可以帮助您构建面向未来的应用程序平台和服务。 Go Micro: Go Micro是一个可插拔的RPC框架,用于分布式系统开发,抽象出了分布式系统的细节。 这里是主要的特点: Service Discovery - Automatic service registration...

人生几何的博客 2427

go-micro使用Consul做服务发现的方法和原理

go-micro v4默认使用mdns做服务发现。不过也支持采用其它的服务发现中间件,因为多年来一直使用Consul做服务发现,为了方便和其它服务集成,所以还是选择了Consul。这篇文章将介绍go-micro使用Consul做服务发现的方法。关于Consul的使用方式请参考我的另一篇文章:使用Consul做服务发现的若干姿势 。

程序员,AI探索者 2409

5.protobuf、grpc、go-micro之间的关系。

不完全是这样的,grpc是一种规范,但是protobuf不是它的具体实现,而是它的一种数据格式和协议。grpc的具体实现是指不同语言的grpc库,比如grpc-go、grpc-java、grpc-c++等,它们都遵循grpc的规范,提供了创建和调用服务的方法和接口。grpc是一个通用的RPC框架,它提供了跨语言和高效的服务间通信能力,但是它并不是一个完整的微服务框架,它没有提供一些微服务开发所需的核心功能,比如服务发现、负载均衡、消息编码、异步消息、可插拔接口等。

Sai_BAN的博客 1430

go-micro v2 hello-micro

go-micro v2入门到精通—1 使用go-micro 创建第一个web api 实现代码如下: package main import ( "github.com/micro/go-micro/v2/web" "net/http" ) func main(){ server := web.NewService(web.Address(":8777")) server.HandleFunc("/", func(writer http.ResponseWriter, request *htt

point_to_line的博客 527

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 微服务框架+代码生成器提高开发效率 持续集成:代码提交后,自动发布测试环境 使用分布式调用链追踪 ...

reboot_xwa的博客 330

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

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

Wang的专栏 735
上一篇: 【go-micro实践】hystrix熔断及dashboard展示
下一篇: 【GO-Micro】micro 重试机制
惜朝_
博客等级 码龄10年 9粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值