Spring Cloud Alibaba Nacos两种检查机制

目录
  • 两种健康检查机制
  • 如何设置健康检查机制?
  • 客户端主动上报机制
  • 服务端反向探测机制
    • TCP 探测
    • HTTP 探测
  • 集群下的健康检查机制
  • 总结

前言:

Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制。有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者提供健康的服务实例,最终保证了业务系统能够正常的执行。

两种健康检查机制

Nacos 中提供了两种健康检查机制:

  • 客户端主动上报机制。
  • 服务器端反向探测机制。

如何理解这两种机制呢? 想象⼀下这么⼀个场景,你所在的地区突然发生地质灾害,你被掩盖在废墟下面,搜救队必须要知道你在废墟里面,那么才能对你进行施救。那有什么方法可以让救援队知道你在废墟下面?

  • 第⼀种,你在废墟里面大喊 help! help! I am here! ,让搜救队知道你的位置和健康状态。
  • 第二种,搜救队使用了他们的专业检查设备,探测到你正埋在废墟下面。

以上这两种方法和 Nacos 的两种健康检查机制类似,也就是客户端主动上报机制,是客户端每隔一段时间,主动向 Nacos 服务器端上报自己的健康状况,而服务器端反向探测机制是 Nacos 服务器端来检测客户端是否健康。

如何设置健康检查机制?

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

 也就是说 Nacos 中的两种服务实例分别对应了两种健康检查机制:

  • 临时实例(也可以叫做非持久化实例):对应的是客户端主动上报机制。
  • 永久实例(也可以叫做持久化实例):服务端反向探测机制。

为什么需要两种服务实例呢? 以淘宝为例,双十一大促期间,流量会比平常高出很多,此时服务肯定需要增加更多实例来应对高并发,而这些实例在双十一之后就无需继续使用了,采用临时实例比较合适。而对于服务的一些常备实例,则使用永久实例更合适。

客户端主动上报机制

临时实例每隔 5 秒会主动上报一次自己的健康状况,发送的数据包叫做心跳包,发送心跳包的机制叫做心跳机制。 如果心跳包的间隔时间超过了 15 秒,那么 Nacos 服务器端就会将此服务实例标记为非健康实例,如果心跳包超过了 30s 秒,那么 Nacos 服务器端将会把此服务实例从服务列表中删除掉。 运行 Nacos 项目时,可以看到客户端主动上报心跳包的日志,

如下图所示: 

从上述图片可以看出,Nacos 客户端会以每 5s 一次的频率来上报自己的健康情况,请求信息如下:

/nacos/v1/ns/instance/beat?app=unknown&namespaceId=public&port=8081&clusterName=DEFAULT&ip=192.168.3.72&serviceName=DEFAULT_GROUP@@spring-cloud-nacos-producer2

服务端反向探测机制

永久实例使用的服务器端反向探测的方式实现健康检查的,它的探测周期是 2000 毫秒 + 随机数(5000 毫秒以内),如果检测异常会将此服务实例,标记为非健康实例,但不会把服务实例向临时实例那样进行删除。 Nacos 服务器反向探测目前内置了 3 种探测协议:HTTP 探测、TCP 探测和 MySQL 探测。 ⼀般而言 HTTP 和 TCP 探测已经可以涵盖绝大多数的健康检查场景,MySQL 主要用于特殊的业务场景,例如数据库的主备需要通过服务名对外提供访问,需要确定当前访问数据库是否为主库时,那么我们此时的健康检查接口,是⼀个检查数据库是否为主库的 MySQL 命令。

TCP 探测

默认情况下,永久实例使用的是 TCP 探测,这点可以在 Nacos 控制台观察到,如下图所示: 

 默认会使用 IP端口来检查,如下图所示: 

TCP 探测的大体逻辑是通过与注册实例建立 channel,不断 ping 注册实例的端口,来判断实例是否健康。

HTTP 探测

HTTP 探测需要在 Nacos 控制台手动配置,如下图所示: 

 我们在服务实例中添加探测接口的实现代码

此时我们重新启动服务实例,在服务详情中可以看到我们配置的 HTTP 探测已经生效了,可以检查出实例是健康的,如下图所示: 

Nacos 服务器端通过检查 HTTP 的接口是否返回 200 状态码,来判断实例是否为健康状态。

集群下的健康检查机制

集群下的健康检查机制可以用一句话来概括,那就是“各司其职”。每个服务对应了一个主注册中心,当注册中心接收到临时实例的心跳包之后,将健康状态同步给其他注册中心。而永久实例也是类似的,每个服务对应了一个主注册中心,当负责的注册中心探测到服务实例的健康状态发生改变时,再会将实例的健康状况同步到其他注册中心,从而实现了集群下的健康检查机制。

总结

Nacos 中提供了两种健康检查机制:临时实例的客户端主动上报机制和永久实例的服务端反向探测机制。临时实例每隔 5s 发送一个心跳包给 Nacos 服务器端,服务器端接收到心跳包之后再将健康状况同步给其他注册中心。永久实例支持 3 种探测协议,TCP、HTTP 和 MySQL,默认探测协议为 TCP,也就是通过不断 ping 的方式来判断实例是否健康。

到此这篇关于Spring Cloud Alibaba Nacos两种检查机制的文章就介绍到这了,更多相关Spring Cloud Alibaba Nacos 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud-Alibaba-Nacos启动失败解决方案

    下载及启动 Nacos 下载地址:https://github.com/alibaba/nacos/releases 在Windows下,进入bin目录,双击 startup.cmd 即可运行 启动出现问题 问题:双击 startup.cmd 启动失败,窗口一闪而过 你需要先去试试你的 Tomcat 能否启动:进入 Tomcat 安装目录 bin 文件夹,双击 startup.bat 如果能正常启动,出门右转,下面的不用看了

  • SpringCloud Alibaba Nacos 整合SpringBoot Admin实战

    目录 1. Spring Boot Admin 是什么 2. Spring Boot Admin 服务端 2.1. 添加依赖(服务端) 2.2. 配置 application.yml 2.3启动类:AdminServerMain 2.4配置类 :SecuritySecureConfig (直接cp官方文档) 3. Spring Boot Admin 客户端 3.1 客户端依赖 3.2 客户端配置 3.3. 客户端运行 4. Spring Boot Admin 功能 1. Spring Boot

  • 关于IDEA中spring-cloud-starter-alibaba-nacos-discovery 无法引入问题

    1.spring-cloud-starter-alibaba-nacos-discovery 这里依赖报红,无法引入,或显示无法找到,更换版本也无法解决,启动项目后nacos中也无法发现服务 ①错误显示unknown就需要加上版本号 2.解决 ①修改IDEA中的maven配置,把下面这个属性修改为Fail Fast(原来默认为default) ②给依赖加上版本 ③刷新maven,重启项目 3.查看nacos服务发现,就成功了 更多精彩内容关注公众号[Java技术迷] 到此这篇关于关于IDEA中s

  • Spring Cloud Alibaba 之 Nacos教程详解

    Nacos 技术讲解 一提到分布式系统就不的不提一下 CAP 原则 Nacos简介 Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现.配置管理.服务治理的综合性解决方案. 官方介绍是这样的: Nacos致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您实现动态服务发现.服务配置管理.服务及流量管理.Nacos帮助您更敏捷和容易地构建.交付和管理微服务平台.Nacos是构建以"服务"为中心的现代应用架构的服务基础设施. 什么是CAP CAP原则

  • Spring Cloud Alibaba Nacos 入门详解

    概览 阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.并表示在6-8个月完成到生产可用的0.8版本,目前版本是0.9版本. Nacos提供四大功能 服务发现和服务健康检查 Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务.Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求. 动态配置管理 动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置.Nacos消除了在更新配置

  • Spring Cloud Alibaba Nacos Config进阶使用

    目录 一.SpringBoot 使用 Nacos Config 实现多环境切换 1. 现象 2. 引入依赖 3. 添加bootstrap.yaml配置文件 4. 配置对应关系图 5. 文件格式简述 6. 启动nacos 8. 添加测试controller 9. 启动Springboot工程并观察到如下日志则为成功 10. 浏览器验证 11. 调整激活环境 12. 新建test环境配置 13. test配置关系图 14. 测试方法 15. 重启springboot服务,监控控制台输出 16. 浏览

  • SpringCloud Alibaba项目实战之nacos-server服务搭建过程

    目录 1.Nacos简介 1.1.什么是Nacos 1.2.Nacos基本原理 2.Nacos-Server服务部署 2.1.standalone 模式 2.2.cluster 模式 源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 这一节我们来学习SpringCloud Alibaba体系中一个非常重要的组件--Nacos. 1.Nacos简介 Nacos官方网站:https://nacos.io/zh-c

  • Spring Cloud Alibaba Nacos Config配置中心实现

    什么是 Nacos Config 在分布式系统中,由于服务数量巨多,为了方便服务 配置文件统一管理,实时更新,所以需要分布式配置中心组件. Spring Cloud Alibaba Nacos Config 是 Spring Cloud Config 的替代方案. Nacos Config 的存储配置功能为分布式系统中的外部化配置提供服务器端和客户端支持,可以在 Nacos 中集中管理 Spring Cloud 应用的外部属性配置. 引入依赖 在 pom.xml 中添加 spring-cloud

  • Spring Cloud Alibaba Nacos两种检查机制

    目录 两种健康检查机制 如何设置健康检查机制? 客户端主动上报机制 服务端反向探测机制 TCP 探测 HTTP 探测 集群下的健康检查机制 总结 前言: Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制.有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者提供健康的服务实例,最终保证了业务系统能够正常的执行. 两种健康检查机制 Nacos 中提供了两种健康检查机制: 客户端主动上报机制. 服务器端反

  • Spring Cloud Alibaba Nacos服务治理平台,服务注册、RestTemplate实现微服务之间访问负载均衡访问的问题

    目录 Nacos简介 ☘Spring Cloud 组件依赖版本 ☘Nacos部署 ☘访问Nacos平台 Nacos服务注册.微服务访问.负载均衡实现 nacos-consumer微服务创建 ☘nacos-provider微服务创建 测试 Nacos简介 Github:https://github.com/alibaba/nacos官网文档:https://nacos.io/zh-cn/docs/what-is-nacos.htmlNacos 提供了发现.配置和管理微服务能力,能快速实现动态服务发

  • spring cloud alibaba Nacos 注册中心搭建过程详解

    这篇文章主要介绍了spring cloud alibaba Nacos 注册中心搭建过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 nacos下载地址 什么是 Nacos? nacos主要起到俩个作用一个是注册中心,另外一个是配置中心. 下面图 是nacos的功能结构图 运行环境 JDK 1.8+: Maven 3.2.x+: 下载 你可以通过源码和发行包两种方式来获取 Nacos. nacos发行包下载地址 选择版本解压 unzip

  • Spring Cloud Alibaba Nacos Config加载配置详解流程

    目录 1.加载节点 2.NacosPropertySourceLocator的注册 3.加载 3.1.加载share 3.2.加载extention 3.3.加载主配置文件 1.加载节点 SpringBoot启动时,会执行这个方法:SpringApplication#run,这个方法中会调prepareContext来准备上下文,这个方法中调用了applyInitializers方法来执行实现了ApplicationContextInitializer接口的类的initialize方法.其中包括

  • Spring Cloud Alibaba使用Nacos作为注册中心和配置中心

    目录 前言 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在Nacos中添加配置 Nacos的动态刷新配置 使用到的模块 前言 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. Nacos简介 Nacos 致力于帮助您发现.配置和管理微服务

  • Spring Cloud集成Nacos Config动态刷新源码剖析

    目录 正文 Nacos Config动态刷新机制 Nacos Config 长轮询源码剖析 ClientWorker构造器初始化线程池 长轮询流程方法 正文 从远端服务器获取变更数据的主要模式有两种:推(push)和拉(pull).Push 模式简单来说就是服务端主动将数据变更信息推送给客户端,这种模式优点是时效性好,服务端数据发生变更可以立马通知到客户端,但这种模式需要服务端维持与客户端的心跳连接,会增加服务端实现的复杂度,服务端也需要占用更多的资源来维持与客户端的连接. 而 Pull 模式则

随机推荐