Nacos宕机思考

个人对Nacos理解不甚透彻,但且说出自己的思考,有错误感谢指证。

前置知识

  1. Nacos作为服务注册、发现中心、配置中心时,有两个端Server和Client。其中Server是负责服务注册、发现、配置,Client负责订阅服务实例列表、配置信息。
  2. Client存在方式是集成到服务当中,如Springboot的Nacos相关依赖引入及yml中Server信息的配置。并且client通过REST请求向Server中注册服务。
  3. Client端有服务实例表的本地内存缓存,Server端也有服务注册表的内存缓存。Slient端默认会30秒从server端拉取一次服务,另外Client会在拉取服务实例信息时,Server建立一个长连接,当服务注册表更新时,Server会主动推送变更通知给Client,这样客户端可以及时感知到服务注册表的变化,保持服务实例信息的实时性。
  4. Client会感知到Server的宕机。当Server宕机时,Client会尝试与之建立连接,如果在一定时间内无法连接成功,则认为Server不可用,并会采取相应的处理措施,例如使用本地缓存提供服务注册表。
  5. server服务临时实例和持久化实例
  1. 临时实例不会持久化到磁盘中,由client主动向server上报健康状态,默认时间间隔5秒,若server 15秒未收到心跳则标记为不健康,30秒内若又收到,则恢复健康状态,否则清除。
  2. 持久化实例会持久化到磁盘中(存到数据库),由server主动检测client服务状态,默认20秒检测一次,如果失败标记为不健康,但不会从内存删除。

宕机问题思考

假如已完成流程:服务A、B注册向Nacos注册服务 -> Nacos存储服务实例 -> B服务调用A服务

看前置知识第4点,结论是Nacos如果宕机了,不论是临时实例和持久化实例

        Nacos宕机后,Client端已经缓存在本地服务实例依然可以使用,除非服务不可用或者真实的服实例发生变化。

 个人思考,纯属理论结果,不对之处还请更正。

补充:

nacos中的配置也会缓存到本地,(为什么说这个,因为若在nacos有配置也不会受nacos服务关闭的影响,这样关掉nacos,就可以很方便验证理论了)

实践过程和结果:

单机部署nacos-server,部署两个接入nacos-client的服务A和B,并使用nacos配置中心,A使用Fegin调用B。在关闭nacos后,nacos无法登录,A和B、A调用B均未收到影响。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值