同一服务的不同实例,在nacos的健康检查模式不一致。
客户端(注册在nacos上的其它微服务实例)健康检查。
客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态,
默认心跳间隔5秒,
nacos会在超过15秒未收到心跳后将实例设置为不健康状态,
超过30秒将实例删除。
服务端健康检查。
nacos主动探知客户端健康状态,默认间隔为20秒,
健康检查失败后实例会被标记为不健康,不会被立即删除。
临时实例通过agent上报模式实现健康检查。
微服务注册为临时实例:
# 默认false
spring:cloud:nacos:discovery:ephemeral: true
部署有单实例的nacos、端口为4000的微服务,注册到本机nacos
系统:Centos7
IP:***.***.1.123
部署端口为4000的微服务,注册到123上nacos
系统:Centos7
IP:***.***.1.105
部署端口为4000的微服务,注册到123上nacos
系统:Windows
IP:***.***.1.181
4000服务多个实例的健康检查模式不一致
通过抓包得到的信息:
抓包过程见:记一次Centos7 tcpdump抓包实例
与nacos部署在同一台服务器的客户端微服务实例,
健康检查模式为服务端检查,非同一服务器为客户端健康检查。
可能是因为在有些情况下,nacos无法访问到客户端微服务,
所以不在同一服务器部署的客户端实例通过心跳上报健康状态。
例如:
nacos部署在阿里云公网服务器,某客户端实例部署在公司内网服务器,
这种情况nacos是访问不到微服务实例的,所以只能采用客户端健康检查。
当然,这样的话该实例只能给内网中的其它实例提供服务。
如果推测有不正确的地方,欢迎指正。
参考文章:
Nacos:Nacos文档
朱鹏飞:Nacos注册中心的设计原理详解
weixin_42073629:Nacos —— 如何做健康检查
陈清河:nacos中临时实例和持久化实例有什么区别?
策码狂奔:Nacos CP/AP模式切换及微服务临时/永久实例配置
本文发布于:2024-01-31 07:39:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170665800126767.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |