Nacos简介

1、什么是Nacos?

Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos由阿里巴巴开源,致力于帮助用户发现、配置和管理微服务。

Nacos提供了一组简单易用的特性集,帮助用户快速实现动态服务发现、服务配置、服务元数据及流量管理。它是构建以“服务”为中心的现代应用架构(如微服务范式、云原生范式)的服务基础设施。

2、CAP理论

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

3、BASE理论

  • Basically Available(基本可用)
  • Soft state(软状态)
  •  Eventually consistent(最终一致性)
  • BASE理论是对CAP中一致性和可用性权衡的结果, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

4、Nacos 服务注册需要具备的能力?

  • 服务提供者把自己的协议地址注册到Nacos server
  • 服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称)
  • Nacos Server需要感知到服务提供者的上下线的变化
  • 服务消费者需要动态感知到Nacos Server端服务地址的变化

5、Nacos运行原理

Nacos注册概括来说有6个步骤:

  • 服务容器负责启动,加载,运行服务提供者。
  • 服务提供者在启动时,向注册中心注册自己提供的服务。
  • 服务消费者在启动时,向注册中心订阅自己所需的服务。
  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  • 服务消费者,从提供者地址列表中,基于负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

5.1、注册中心原理

5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败,则认为实例不健康,如果30秒内健康检查失败,则移除实例。

5.2、配置中心原理

5.3、Nacos配置文件每次更新了配置,服务器都要重启才能拉取到最新的配置。有没有方法更新了配置后就能拿到?

首先要知道当项目启动是怎么去加载配置的,和我们修改配置后会怎样?以下是大概流程
加载配置
修改配置
使用以下注解搭配
  • @NacosValue 注解用于从 Nacos 配置中心注入配置属性到 Spring Bean 中。虽然它可以自动刷新配置,但需要 autoRefreshed = true,并且通常还需要 @RefreshScope 来确保 Bean 重新加载
  • @NacosValue(value = "${my.config.value}", autoRefreshed = true)
  • @NacosConfigListener 注解用于监听 Nacos 配置的变化,当指定的配置属性发生变化时,会触发对应的方法。你可以在这个方法中手动刷新相关的配置或触发其他刷新机制
  • @NacosConfigListener(dataId = "my-config.yaml", groupId = "DEFAULT_GROUP")
        public void onChange(String newConfig) {
            System.out.println("Configuration changed: " + newConfig);
            // 在这里处理配置变更,例如刷新缓存
        }
  • @ConfigurationProperties 注解用于将配置属性绑定到 Java 对象的字段中。要实现动态刷新,需要结合 @RefreshScope
  • @ConfigurationProperties(prefix = "my.config")
  • @RefreshScope:用于动态刷新 Spring Bean,确保应用最新的配置

6、Nacos 服务发现产品对比

7、面试题思考

  • 为什么要将服务注册到nacos?
  • 在Nacos中服务提供者是如何向Nacos注册中心续约的?
  • 对于Nacos服务来讲它是如何判定服务实例的状态?
  • 服务启动时如何找到服务启动注册配置类?
  • 服务消费方是如何调用服务提供方的服务的?
  • Nacos中的负责均衡底层是如何实现的?
  • Ribbon 是什么?
  • Ribbon 可以解决什么问题? 
  • Ribbon 内置的负载策略都有哪些?
  • 我们可以自己定义负载均衡策略吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值