上一篇文章 《Nacos是如何实现服务注册功能的》,我们全面解析了Nacos是如何实现服务注册的,那么这篇文章,就来看看Nacos是如何实现心跳机制和服务续约以及健康检查机制的。
心跳机制
客户端
nacos进行服务的注册之前,会进行判断:
- 如果当前客户端是临时的【
ephemeral: true
】,则触发心跳机制,默认5秒发送一次心跳,如果15秒内没有收到心跳,那么会将这个服务更改为不健康的状态,如果30秒内仍然没有接收到心跳,则会从注册表中剔出该服务。 - 如果是永久的,则只会声明服务是否健康,不会剔除服务。
NacosNamingService#registerInstance
BeatReactor#addBeatInfo
【这里用定时线程池,在task中有递归调