Spring|Spring Cloud Alibaba Nacos 的 2 种健康检查机制!
Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制。有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者提供健康的服务实例,最终保证了业务系统能够正常的执行。
两种健康检查机制
Nacos 中提供了两种健康检查机制:
- 客户端主动上报机制。
- 服务器端反向探测机制。
想象?下这么?个场景,你所在的地区突然发生地质灾害,你被掩盖在废墟下面,搜救队必须要知道你在废墟里面,那么才能对你进行施救。那有什么方法可以让救援队知道你在废墟下面?
- 第?种,你在废墟里面大喊 help! help! I am here! ,让搜救队知道你的位置和健康状态。
- 第二种,搜救队使用了他们的专业检查设备,探测到你正埋在废墟下面。
![Spring|Spring Cloud Alibaba Nacos 的 2 种健康检查机制!](https://cdn.nlark.com/yuque/0/2022/png/92791/1644636144646-ef2f16da-cc5b-42a5-a141-94b10c74d086.png#clientId=u08494fd9-39c9-4&crop=0&crop=0&crop=1&crop=1&from=paste&<br />
文章图片 <br />
<br />
如何设置健康检查机制?
Nacos 中的健康检查机制不能主动设置,但健康检查机制是和 Nacos 的服务实例类型强相关的。<br> 也就是说 Nacos 中的两种服务实例分别对应了两种健康检查机制:<br />
<ol>
<li>临时实例(也可以叫做非持久化实例):对应的是客户端主动上报机制。</li>
<li>永久实例(也可以叫做持久化实例):服务端反向探测机制。</li>
</ol>
为什么需要两种服务实例呢?<br> 以淘宝为例,双十一大促期间,流量会比平常高出很多,此时服务肯定需要增加更多实例来应对高并发,而这些实例在双十一之后就无需继续使用了,采用临时实例比较合适。而对于服务的一些常备实例,则使用永久实例更合适。<br />
客户端主动上报机制
临时实例每隔 5 秒会主动上报一次自己的健康状况,发送的数据包叫做心跳包,发送心跳包的机制叫做心跳机制。<br> 如果心跳包的间隔时间超过了 15 秒,那么 Nacos 服务器端就会将此服务实例标记为非健康实例,如果心跳包超过了 30s 秒,那么 Nacos 服务器端将会把此服务实例从服务列表中删除掉。<br> 运行 Nacos 项目时,可以看到客户端主动上报心跳包的日志,如下图所示:<br> <img alt=)
推荐阅读
- java|分布式+Redis+Nginx+设计模式+Spring全家桶+Dubbo
- Spring|Spring MVC 是什么? 核心总结
- 【Spring|SpringBoot - 使用Assert校验让业务代码更简洁
- 【Spring|SpringBoot - 优雅的实现【自定义参数校验】高级进阶
- 最全的Spring依赖注入方式,你都会了吗()
- spring|爽易购商城--后台管理
- 学习Spring5必知必会(4)~使用注解配置、使用java代码配置
- gateway|网关: springcloud-gateway 组件的使用
- SpringBoot自定义/error路径失效的解决
- Spring|Spring Boot 学习-基础