
Nacos的两种健康检查机制
Nacos作为一个服务注册中心,需要感知服务的状态,才能为服务调用方提供良好的服务,而它自身提供了两种健康检查机制:
- 客户端主动上报机制:
- 客户端通过心跳上报方式告知nacos注册中心健康状态,默认心跳间隔5秒;
- nacos会在超过15秒未收到心跳后将实例设置为不健康状态,超过30秒将实例删除服务器端
- 反向探测机制:
- nacos主动探知客户端健康状态,默认间隔为20秒
- 健康检查失败后实例会被标记为不健康,不会被立即删除
比如领导管理员工的工作
- 员工主动汇报:员工每天主动汇报自己工作进度
- 领导主动问询: 领导每周向员工了解工作进度
Nacos 中的健康检查机制不能主动设置,健康检查机制是和 Nacos 的服务实例类型强相关的
服务实例类型
Nacos的服务实例(注册的节点)分为临时实例和非临时实例:
- 临时实例:如果实例岩机超过一定时间,会从服务列表剔除,默认类型
- 非临时实例:如果实例岩机,不会从服务列表剔除,也可以叫永久实例
Nacos对临时实例,采取的是客户端主动上报机制,对非临时实例,采取服务器端反向探测机制
此处类似于正式工和临时工:
正式工由于有合同在身,领导每隔一段时间都会过来检查工作进度.
而临时工一般干完活就走了,也无关紧要了.
我们默认创建的实例一般都是临时实例,但也可以通过更改配置文件来将其设置为一个永久实例
spring:
cloud:
nacos:
discovery:
ephemeral: false #false表示非临时实例
注意事项
在更改实例类型之后重启服务,此时我们可能会发现实例类型出现报错的情况,查看报错信息:
Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req<