什么是配置中心?
存储项目配置信息的一个服务
为什么要使用配置中心?
集中管理配置信息,动态发布配置信息
市场上有哪些主流的配置中心?
市场上主流配置中心有Apollo(携程开源),nacos(阿里开源),Spring Cloud Config(Spring Cloud
全家桶成员)
@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化)
小节面试分析
配置中心一般都会配置什么内容?(可能会经常变化的配置信息,例如连接池,日志、线程池、限流熔断规则)
什么信息一般不会写到配置中心?(服务端口,服务名,服务的注册地址,配置中心)
项目中为什么要定义bootstrap.yml文件?(此文件被读取的优先级比较高,可以在服务启动时读取配置中心的数据)
Nacos配置中心宕机了,我们的服务还可以读取到配置信息吗?(可以从内存,客户端获取了配置中心的配置信息以后,会将配置信息在本地内存中存储一份.)
微服务应用中我们的客户端如何获取配置中心的信息?(为了考虑性能我们的服务一般首先会从内存读取配置信息,同时我们的微服务还可以定时向nacos配置中心发请求拉取(pull)更新的配置信息,但是在一定时间间隔内还可能会出现不一致的配置,所以nacos服务端而言,当配置变化时,会通知客户端然后更新客户端.)
微服务应用中客户端如何感知配置中心数据变化?(当数据发生变化时,nacos找到它维护的客户端,然后通知客户端去获取更新的数据,客户端获取数据以后更新本地内存,并在下次访问资源时,刷新@Value注解描述的属性值,但是需要借助@RefreshScope注解对属性所在的类进行描述)
服务启动后没有从配置中心获取我们的配置数据是什么原因?(依赖,配置文件名字bootstrap.yml,配置中心的dataId名字是否正确,分组是否正确,配置的名字是否正确,缩进关系是否正确,假如是动态发布,类上是否有@RefreshScope注解)
你项目中使用的日志规范是什么?(SLF4J)
你了解项目中的日志级别吗?(debug,info,error,…,可以基于日志级别控制日志的输出
Nacos配置管理模型
概述
Nacos 配置管理模型由三部分构成,如图所示:
Namespace:命名空间,对不同的环境进⾏隔离,⽐如隔离开发环境和⽣产环境。
Group:分组,将若⼲个服务或者若⼲个配置集归为⼀组。
Service/DataId:某⼀个服务或配置集,一般对应一个配置文件。
小节面试分析
Nacos配置管理模型的背景?(环境不同配置不同)
Nacos配置中的管理模型是怎样的?(namespace,group,service/data-id)
Nacos客户端(微服务)是否可以读取共享配置?(可以)
总结(Summary)
重难点分析
配置中心的选型。(市场活跃度、稳定性、性能、易用)
Nacos配置中心基本应用。(新建,修改、删除配置以后,在Nacos客户端应用配置)
配置管理模型应用。(namespace,group,service/dataId)
Nacos配置变更的动态感知。(底层原理分析)
FAQ分析
为什么需要配置中心?(动态管理发布配置,无需重启服务,更好保证服务的可用)
配置中一般要配置什么内容?(经常变化的配置数据-日志级别,线程池、连接池、…)
市面上有哪些主流配置中心?(Nacos,….)
配置中心选型时要重点考虑哪些因素?(市场活跃度、稳定性、性能、易用)
Nacos客户端(微服务业务)如何动态感知配置中心数据变化的?(nacos2.0之前nacos客户端采用长轮询机制拉取nacos服务的配置信息,pull(每隔30秒)+“push(是在服务端的配置信息变更以后,通知服务端中处于等待状态的客户端队列中的客户端对象,并更新客户端对应的响应数据,然后返回响应)”)
Nacos配置管理模型是怎样的?(命名空间-namespace,分组-group,服务实例-dataId)
本章详情