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

embedded/2025/1/22 15:33:58/

目录

  • Nacos的两种健康检查机制
  • 服务实例类型
  • 注意事项
  • 实操演示

在这里插入图片描述

Nacos的两种健康检查机制

Nacos作为一个服务注册中心,需要感知服务的状态,才能为服务调用方提供良好的服务,而它自身提供了两种健康检查机制:

  1. 客户端主动上报机制
  • 客户端通过心跳上报方式告知nacos注册中心健康状态,默认心跳间隔5秒;
  • nacos会在超过15秒未收到心跳后将实例设置为不健康状态,超过30秒将实例删除服务器端
  1. 反向探测机制:
  • nacos主动探知客户端健康状态,默认间隔为20秒
  • 健康检查失败后实例会被标记为不健康,不会被立即删除
    在这里插入图片描述

比如领导管理员工的工作

  1. 员工主动汇报:员工每天主动汇报自己工作进度
  2. 领导主动问询: 领导每周向员工了解工作进度

Nacos 中的健康检查机制不能主动设置,健康检查机制是和 Nacos 的服务实例类型强相关的


服务实例类型

Nacos的服务实例(注册的节点)分为临时实例和非临时实例:

  • 临时实例:如果实例岩机超过一定时间,会从服务列表剔除,默认类型
  • 非临时实例:如果实例岩机,不会从服务列表剔除,也可以叫永久实例

Nacos对临时实例,采取的是客户端主动上报机制,对非临时实例,采取服务器端反向探测机制
在这里插入图片描述

此处类似于正式工和临时工:
正式工由于有合同在身,领导每隔一段时间都会过来检查工作进度.
而临时工一般干完活就走了,也无关紧要了.

我们默认创建的实例一般都是临时实例,但也可以通过更改配置文件来将其设置为一个永久实例

spring:cloud:nacos:discovery:ephemeral: false #false表示非临时实例

注意事项

在更改实例类型之后重启服务,此时我们可能会发现实例类型出现报错的情况,查看报错信息:

java">Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([http://120.26.87.94:10020]) tried: caused: errCode: 400, errMsg: Current service DEFAULT_GROUP@@product-service is ephemeral service, can't register persistent instance. ;at com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy.reqApi(NamingHttpClientProxy.java:410) ~[nacos-client-2.2.1.jar:na]at com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy.reqApi(NamingHttpClientProxy.java:351) ~[nacos-client-2.2.1.jar:na]at com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy.reqApi(NamingHttpClientProxy.java:346) ~[nacos-client-2.2.1.jar:na]at com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy.registerService(NamingHttpClientProxy.java:153) ~[nacos-client-2.2.1.jar:na]at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.registerService(NamingClientProxyDelegate.java:98) ~[nacos-client-2.2.1.jar:na]at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:143) ~[nacos-client-2.2.1.jar:na]at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:75) ~[spring-cloud-starter-alibaba-nacos-discovery-2022.0.0.0-RC2.jar:2022.0.0.0-RC2]... 25 common frames omitted

原因其实很简单:
原因:Nacos会记录每个服务实例的IP和端口号,当发现IP和端口都没有发生变化时,Nacos不允许一个服务实例类型发生变化,比如从临时实例,变为非临时实例,或者从非临时实例,变成临时实例,
解决办法:

  1. 停掉nacos
  2. 删除nacos 目录下 /data/protocol/raft 信息,里面会保存应用实例的元数据信息
  3. 重启nacos,此时刚才的配置就生效了
    在这里插入图片描述

上述为在Linux服务器上的操作,而在windws上同理,只不过更简单了

实操演示

经过上述操作再重新启动服务,就会发现我们更改的配置已经生效了
在这里插入图片描述
在这里插入图片描述

此时,再关掉我们这几个服务,过一会观察情况
在这里插入图片描述

刷新一下naco网页,就会发现只剩我们刚才设置的永久实例还存在,而其他实例由于都是临时实例被nacos给删掉了

在这里插入图片描述
点进去"详情"查看,发现健康状态为false,但它并没有被nacos删除

在这里插入图片描述


在这里插入图片描述


http://www.ppmy.cn/embedded/156083.html

相关文章

【Postgres_Python】使用python脚本批量创建和导入多个PG数据库

之前批量创建和导入数据库分为2个python脚本进行,现整合优化代码合并为一个python脚本,可同步实现数据库的创建和数据导入。之前的文章链接: 【Postgres_Python】使用python脚本批量创建PG数据库 【Postgres_Python】使用python脚本将多个.S…

【电视盒子】HI3798MV300刷机教程笔记/备份遥控码修复遥控器/ADB/线刷卡刷/电视盒子安装第三方应用软件

心血来潮,看到电视机顶盒满天飞的广告,想改造一下家里的电视盒子,学一下网上的人刷机,但是一切都不知道怎么开始,虽然折腾了一天,以失败告终,还是做点刷机笔记。 0.我的机器 年少不会甄别&…

C++类型转换总结

类型转换 隐式转换 C自动执行很多类型转换: 将一种算术类型的值赋给另一种算术类型的变量时,C将对值进行转换; 表达式中包含不同的类型时,C将对值进行转换; 将参数传递给函数时,C将对值进行转换。 C类…

【BUUCTF】[RCTF2015]EasySQL1

二次注入原理 是一种比较隐蔽的 SQL 注入类型 用户输入的数据先被存储到数据库中(此时可能未被恶意利用),后续应用程序从数据库中读取该数据并再次使用在 SQL 查询中,而此时就可能导致 SQL 注入问题。 如,用户注册时…

【Node.js]

一、概述 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。 官网地…

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块,例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…

ARM-V9 CCA/RME QEMU环境搭建

整个用于 CCA 的软件栈仍在开发中,这意味着指令会频繁更改,且仓库可能是临时的。有关手动编译该栈以及从 OP-TEE 构建环境编译的指令,均基于 Ubuntu 22.04 LTS 系统编写。 使用 OP-TEE 构建环境 此方法至少需要以下工具和库。下面描述的手动构建方法也需要大部分这些工具。…

Web3 数字资产如何更有趣?解锁 Ultiland 融合 MeMe 与 RWA 的技术路径

链上数字资产的快速发展,如何与艺术创作深度融合?一众实体资产渴望向 Web3 无缝跃迁,你知道 Ultiland 交出了一份怎样的答卷吗?创新 Meme-like RWA 模型,让艺术品、房地产等资产进入 Web3,开启全新投资体验…