Nacos健康检查机制

Nacos心跳机制解读(含简单源码分析) 心跳机制是一种用于监测和管理微服务可用性的机制,它用来维护注册中心和服务提供者之间的连接状态,并及时更新服务实例的状态信息。心跳机制包括两个主要组件:心跳发送方(客户端)和心跳接收方(服务端)。每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。发包方可以是客户也可以是服务端心跳发送方(Heartbeat Sender):每个微服务都会定期发送称为心跳消息的请求到一个中央位置(例如注册中心或负载均衡器)。 阅读详情

本章内容

健康检查类型

Nacos根据服务实例类型提供了两种健康检查机制:

  • 临时实例:采用客户端主动上报心跳的方式进行健康检查。
  • 持久实例:采用服务端主动探测的方式进行健康检查。

服务实例类型配置方式:

server:
  port: 8081
spring:
  application:
    name: order-server
  cloud:
    nacos:
      discovery:
        # ephemeral值:true-临时实例,false-持久实例,默认为:true
        ephemeral: true

临时实例健康检查

发送实例心跳接口

请求协议:HTTP(2.x版本新增gRPC)

请求类型:PUT

请求路径:/nacos/v1/ns/instance/beat

请求参数

响应编码

客户端发送心跳请求

服务启动时,向Nacos服务发送服务注册请求,如果服务实例为临时实例,则会向Nacos服务端发送心跳请求。

客户端发送心跳请求,如图所示:

处理流程:

  • 1)服务启动时,向Nacos服务端发送服务注册请求,如果服务实例为临时实例,则会向Nacos服务端发送心跳请求。
  • 2)构建心跳信息。
  • 3)将心跳信息封装成Task(线程),并放入定时任务线程池中以固定频次(默认5秒/次)向Nacos服务端发送心跳。
  • 4)根据服务端响应信息判断服务是否已注册,如果服务未注册,则向Nacos服务端发送服务注册请求。
  • 5)延迟指定时间后继续向Nacos服务端发送心跳请求(即:定时向Naco服务端发送心跳请求)。

服务端处理心跳请求

Nacos服务端收到客户端心跳请求后,调用心跳检测接口对应的处理方法处理心跳请求。

服务端心跳处理请求包含两个步骤:

  • 1)处理客户端心跳请求。
  • 2)定时检测服务实例是否已过期。

处理客户端心跳请求

处理客户端心跳请求,如图所示:

处理流程:

  • 1)接收客户端请求(即:调用InstanceController.beat()方法)。
  • 2)解析请求参数,并根据请求参数构建心跳信息对象(RsInfo对象)。
  • 3)根据namespaceId、serviceName、clusterName、ip、port等信息从注册表中获取服务实例信息,如果实例信息不存在,则根据心跳请求参数构建服务实例并向注册表中注册该服务实例。
  • 4)构建客户端心跳处理器(ClientBeatProcessor)对象封装客户端心跳信息。
  • 5)将客户端心跳处理器放入线程池中进行心跳处理。
  • 6)根据集群名、ip、port等信息查找客户端对应的服务实例(即:发送心跳请求的服务实例)。
  • 7)更新服务实例最后一次心跳时间为系统当前时间。

定时检测服务实例是否已过期

定时检测服务实例是否已过期,如图所示:

处理流程:

  • 1)服务首次注册,创建服务并初始化(即:调用Service.init()方法)。
  • 2)根据服务信息构建心跳检测任务(ClientBeatCheckTask),并开启一个定时任务以5秒/次的频率执行心跳检测任务。
  • 3)获取服务中的所有临时实例,判断实例最后一次心跳时间距离当前时间是否超过心跳检测超时时长(默认为15s),超过心跳检测超时时长,则设置服务实例的健康状态为false,并发布一个服务变更事件和心跳超时事件。
  • 4)判断实例最后一次心跳时间距离当前时间是否超过删除实例设定的超时时长(默认为30s),超过删除实例设定的超时时长,则将该实例从实例列表中移除。

持久实例健康检查

如果服务实例为持久实例,则服务端以主动探测的方式定时向服务实例发送请求,检查服务的健康状态。

持久实例健康检查,如图所示:

处理流程:

  • 1)服务首次注册时,创建服务并初始化集群信息(即:调用Cluster.init()方法)。
  • 2)根据集群信息构建健康检查任务(HealthCheckTask),并开启一个定时任务以(2000 + 5000毫秒内的随机数)/次的频率执行健康检查任务。
  • 3)遍历服务下所有的持久实例,创建Beat对象封装持久实例和对应的健康检查信息。
  • 4)将Beat对象加入到任务队列(阻塞队列)中。
  • 5)不停的从任务队列中取出健康检查任务,并将其封装成任务处理器(TaskProcessor)对象加入到tasks集合中。
  • 6)批量执行tasks集合中的任务处理器,向服务实例(客户端)发送请求进行探测。

Nacos与Eureka区别

Nacos与Eureka健康检查主要区别:

  • Eureka以30秒/次的频率对服务实例进行健康检查。
  • Nacos将服务实例分为临时实例和持久实例:
    • 临时实例:以5秒/次的频率对服务实例进行健康检查。
    • 持久实例:服务端以(2000 + 5000毫秒内的随机数)/次的频率对服务实例进行主动探测。

【作者简介】

一枚热爱技术和生活的老贝比,专注于Java领域,关注【南秋同学】带你一起学习成长~

Nacos——服务注册和心跳机制 Nacos服务注册和心跳机制源码分析 阅读详情

相关推荐

Nacos服务心跳和健康检查源码介绍

接下来我们看标记不健康时候的代码,这部分代码在客户端注册的时候也出现相同的代码,只是我们略过了,这部分也是观察者模式的重要体现,从这里我们可以学习到的东西在于结合Spring的事件机制,轻松实现观察者模式,当然这个里面也有部分我感觉写的不太好,哈哈,大佬们看到勿喷。重点部分就是看BeatTask,BeatTask继承Runnable,run方法就是我们的重点,该方法调用了NamingProxy的sendBeat方法,服务端请求地址为/instance/beat的方法。

spring_root的博客 1253

【Nacos源码系列】Nacos心跳机制原理

Nacos心跳机制原理

做一个有思想的技术人 3601

Spring Cloud Alibaba Nacos 的 2 种健康检查机制

Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制。有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者提供健康的服务实例,最终保证了业务系统能够正常地执行。Nacos 中提供了两种健康检查机制:如何理解这两种机制呢?想象⼀下这么⼀个场景,你所在的地区突然发生地质灾害,你被掩盖在废墟下面,搜救队必须要知道你在废墟里面,那么才能对你进行施救。那有什么方法可以让救援队知道你在废墟下面?以上这两种方法和 Nacos 的

m0_71777195的博客 814

Nacos学习笔记(四):心跳机制

Nacos源码学习:心跳

仔哥学编程 4548

使用 Wireshark 分析 PPPoE 流量中的 BRAS 名称 AC-Name

客户端发出广播请求,寻找 PPPoE 服务器。: BRAS 服务器响应 PADI 请求,提供服务并包含AC-Name。: 客户端选择一个 BRAS 并发起连接请求。: BRAS 确认连接并分配会话 ID。在这些阶段中,AC-Name是 BRAS 提供的一个关键字段,用于标识服务器名称。

caca_66的博客 2066

Tushare使用教程

@Tushare简易教程 Python财经数据接口Tushare 最近在看量化分析有关的东西,然后第一步先了解的就是如何获取股票交易数据。发现大部分教程都是关于Tushare的,于是在这里简单的介绍一下Tushare的用法吧。目前tushare有免费版本和升级的需要付费的Pro版本。大多数教程写的都是免费版本,但是pro版本提供的数据更多,但是由于本人入坑还不深,暂时还是用的免费版本,但是每次使用都收到提示,“本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/documen

kuangzhi9124的博客 2万+

【微服务】Nacos 健康检查机制

在上文中,我们介绍了 Nacos 注册中心中的服务数据模型,说明了服务、实例以及集群的内容, 关系及它们的生命周期。期间健康检查是⼀个被反复提及的词语,这是由于注册中心不应该仅仅提 供服务注册和发现功能,还应该保证对服务可用性进行监测,对不健康的服务和过期的进行标识或 剔除,维护实例的生命周期,以保证客户端尽可能的查询到可用的服务列表。因此本文将详细介绍 Nacos 注册中心中的健康检查机制。

qq_57756904的博客 7961

说一说系统/子系统规格说明

《系统/子系统规格说明》都是从用户的角度以软件的维度来描述系统的功能、性能、业务流程、数据流和控制流等,并描述内外部接口需求、资源使用情况等.

weixin_40725543的博客 5429

Nacos 健康检查机制

Nacos 健康检查机制

深圳市多克创新科技有限公司 1388

第4章 Stata参数检验

目录 4.1单一样本T检验 案例延伸 4.2独立样本T检验 案例延伸 1.改变置信水平 2.在异方差假定条件下进行假设检验 4.3配对样本T检验 案例延伸 1.改变置信水平 4.4单一样本方差的假设检验 案例延伸 4.5双样本方差的假设检验 参数检验(Parameter Test)是指对参数的平均值、方差、比率等特征进行的统计检验。参数检验一般假设统计总体的具体分布为已知,但是其中一些参数或者取值范围不确定,分析的主要目的是估计这些未知参数的取值,或者对这些参数进...

qq_45112156的博客 1万+

多台树莓派(主机)通信

在做无人机实验时,有个任务需要 两台无人机 或 无人机与小车 进行通信。 由于我们飞机上用了树莓派,相当于一台电脑,索性选用Socket网络编程。 条件:树莓派、局域网(手机热点或路由器)。需要通信的两台树莓派接入同一个局域网。 如若现场没有网络,可将树莓派配置为无线路由器,发射wifi。网上很多教程,注意一点是树莓派需要先用网线接入路由器再配置。 发送数据: # -*- coding...

LNL_LNL的博客 7687

5、Nacos心跳机制与健康检查

如果您对Nacos工作流程和原理还不是很清楚的话,建议从前面的文章开始看: 1、nacos功能简介 2、Nacos服务注册-客户端自动注册流程 3、Nacos服务注册-客户端(nacos-client)逻辑 4、Nacos服务注册-服务端(nacos-naming)逻辑    nacos心跳机制与健康检查流程图:    一、心跳 1、客户端心跳 在《Nacos服务注册-客户端(nacos-client)逻辑》这篇中已经提到过一次了,这里再作一些说明。在NacosNamingService.register

jb84006的博客 9932

X电容与Y电容,看这一篇就够了

本文详细介绍了X电容与Y电容的定义、作用、位置、分类,以及它们在实际应用中的容值选取和计算方法。通过汽车电子应用和X电容放电电路的实例,帮助读者深入理解这两种安规电容的重要性。文章还探讨了电容放电电阻的计算,确保符合安全规范。

让你爱上电路设计 7016

【Nacos 架构 & 原理】服务发现模块之Nacos健康检查机制

由于持久化服务的实例的在被主动删除前一直存在的特性,探活的定时任务会不断探测服务的健康状态,并且将无法探测成功的实例标记为不健康。但是有些时候会有这样的场景,有些服务不希望去校验其健康状态,**Nacos也是提供了对应的白名单配置,用户可以将服务配置到该白名单,那么 Nacos 会放弃对其进行健康检查,**实例的健康状态也始终为用户传入的健康状态。临时实例只会对其被负责的注册中心节点发送心跳信息,注册中心服务节点会对其负责的永久实例进行健康探测,在。进行临时实例的注册,通过 Nacos 的。

RuaaaHaHa的博客 1225

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1675

RT-Thread littefs控制GD32F4xx片内Flash

GD32F4xx RT-Thread下使用littefs 控制片内flash 调试记录

madao1234的博客 995

Nacos服务健康检查机制与配置

Nacos服务健康检查机制解析与配置实践 摘要: 本文详细介绍了Nacos服务注册与发现中的健康检查机制,包含客户端主动上报和服务端主动探测两种模式。通过Spring Boot项目示例,展示了心跳间隔、HTTP探测URL等关键参数的配置方法,并提供了常见问题的解决方案。文章还包含完整的依赖引入、配置文件和代码实现示例,帮助开发者快速掌握Nacos健康检查的实际应用,提升微服务系统的稳定性。最后预告了Nacos动态路由的学习内容,为后续深入使用Nacos奠定基础。

fykam的博客 1291

蜜雪冰城微信小程序源码.zip

蜜雪冰城微信小程序源码.zip

Nacos架构与原理 - 健康检查机制

作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。

smart_an的专栏 1141

1、智能照明系统解决方案.pptx

1、智能照明系统解决方案.pptx

svpwmPI.rar_PI控制器_ac current_current controller_交流调速MATLAB_速度控制器

速度和电流控制器为PI控制器的SVPWM交流调速仿真

【Nacos】健康检查机制(附实操案例)

本文围绕 Nacos 展开,主要介绍其两种健康检查机制,阐述服务实例类型,强调在使用中需关注的注意事项,并通过实操演示,从理论到实践全面呈现 Nacos 相关知识,为读者提供系统且实用的信息。

2202_75555590的博客 2238

Python基于Opencv传统图像处理实现玻璃瓶口缺陷检测项目源码+缺陷数据.zip

Python基于Opencv传统图像处理实现玻璃瓶口缺陷检测项目源码+缺陷数据.zipPython基于Opencv传统图像处理实现玻璃瓶口缺陷检测项目源码+缺陷数据.zipPython基于Opencv传统图像处理实现玻璃瓶口缺陷检测项目源码+缺陷数据.zip【项目资源介绍】主要针对正在做毕设的同学和需要项目实战的深度学习cv图像识别模式识别方向学习者。也可作为课程设计、期末大作业。包含:项目源码、项目操作说明等,该项目可直接作为毕设使用。也可以用来学习、参考、借鉴。如果基础不错,在此代码上做修改,训练其他模型。./bottle_create.py 对框中瓶子进行检查./bottle_mouth.py 对瓶口缺陷进行检测源文件./bottles 检测的原图像./bottle 检测完的图像

Nacos 源码分析 —— 健康检查机制详解

Nacos健康检查机制解析:本文详细剖析了Nacos作为服务发现和配置管理平台的核心健康检查功能。系统采用客户端心跳上报(默认5秒间隔)与服务端主动探测(TCP/HTTP/MySQL检查)双模式,通过心跳超时检测(15秒阈值)和失效实例自动清理(30秒过期)确保服务可用性。架构设计包含健康检查引擎、集群状态同步、事件通知机制等模块,支持SPI扩展自定义检查器。系统通过批量处理、任务分配等优化性能,并提供完善的监控指标。该机制有效解决了微服务架构中实例动态变化导致的请求失败问题,保障了服务注册中心的稳定性和可

油墨香^-^的博客 911

Nacos临时实例和永久实例的区别以及健康检查机制

临时实例只是临时存在于注册中心中,会在服务下线或不可用时被注册中心剔除,临时实例会与注册中心保持心跳,注册中心会在⼀段时间没有收到来自客户端的心跳后会将实例设置为不健康,然后在⼀段时间后进行剔除。 永久实例在被删除之前会永久的存在于注册中心,且有可能并不知道注册中心存在,不会主动向注册中心上报心跳,那么这个时候就需要注册中心主动进行探活。...

xzh_blog 8280

Nacos支持的服务健康检查机制有哪些?

Nacos 通过客户端主动上报和服务端反向探测等多种机制,提供了灵活且强大的服务健康检查功能。这些机制可以帮助你实时监控服务实例的状态,确保服务的高可用性和稳定性。同时,Nacos 还支持自定义健康检查逻辑和集群模式下的健康检查,以满足不同场景的需求。

qq_33240556的博客 1603

Nacos服务注册时的健康检查机制具体是如何实现的?

Nacos服务注册采用双模式健康检查机制:1)临时实例通过客户端心跳(5秒间隔)维护状态,超时自动剔除;2)永久实例由服务端主动探测(TCP/HTTP),失败标记不健康需手动注销。临时实例使用Distro协议异步同步,永久实例通过Raft协议强一致。支持自定义检查、白名单等扩展,兼顾灵活性与可靠性。该设计实现毫秒级状态感知,同时降低网络开销,保障服务高可用。

csdn_tom_168的博客 1408

Nacos 2.x 系列【16】注册中心健康检查机制

注册中心不应该仅仅提供服务注册和发现功能,还应该保证对服务可用性进行监测,对不健康的服务和过期的进行标识或剔除,维护实例的生命周期,以保证客户端尽可能的查询到可用的服务列表。

记录知识、锤炼自我 1386

Nacos系列【23】Nacos2.x服务发现模块之注册中心健康检查机制

有道无术,术尚可求,有术无道,止于术。 资料整理来自Nacos架构与原理电子书,下载地址:https://developer.aliyun.com/ebook/36?spm=a2c6h.20345107.ebook-index.18.152c2984fsi5ST 文章目录健康检查机制注册中心的健康检查机制Nacos 健康检查机制临时实例健康检查机制永久实例健康检查机制集群模式下的健康检查机制小结 健康检查机制 在上文中,我们介绍了 Nacos 注册中心中的服务数据模型,说明了服务、实例以及集群的内容, .

记录知识、锤炼自我 2229
上一篇: 「一文搞懂」MySQL缓冲池(buffer pool)
下一篇: 「超级详细」Nacos健康检查源码解析
南秋同学
博客等级 码龄7年 64粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值