1.什么是配置中心
配置中心是微服务架构中用于集中管理和动态更新配置的组件
配置中心是一个集中化的配置管理平台,用于存储和管理微服务应用的所有配置信息。通过配置中心,开发者可以实现配置的统一管理、动态更新和多环境支持,避免配置分散在各个服务中,提高系统的可维护性和灵活性
2.SpringCloud配置中心的的核心功能(有哪些优势)
(1)集中化管理:将应用的配置信息集中存储在配置中心,避免配置分散在各个服务中
(2)动态更新:支持在运行时动态修改配置,无需重启服务
(3)多环境支持:支持不同环境(如开发、测试、生产)的配置管理,通过命名空间或配置文件区分
(4)版本管理:支持配置的版本控制,方便回滚和历史记录查看
(5)安全性:支持配置的加密存储和访问控制,确保敏感信息的安全性
3.为什么微服务需要配置中心
微服务架构中的每个服务通常都需要一些配置信息,例如数据库连接地址、服务端口、日志级别等。这些配置可能因为不同环境、不同部署实例或者动态运行时需要进行调整和管理。
微服务的实例一般非常多,如果每个实例都需要一个个地去做这些配置,那么运维成本将会非常大,这时候就需要一个集中化的配置中心,去管理这些配置。
4.SpringCloud可以选择哪些配置中心
(1)Spring Cloud Config(官方推荐):官方推荐的配置中心,支持将配置文件存储在Git、SVN等版本控制系统中,并提供RESTfUAPI进行访问和管理。
(2)Nacos:阿里巴巴开源的服务发现、配置管理和服务管理平台,也可以作为配置中心使用。支持服务注册与发现、动态配置管理、服务健康监测和动态DNS服务等功能。
(3)ZooKeeper:一个开源的分布式协调服务,可以用作配置中心。它具有高可用性、一致性和通知机制等特性。
(4)Consul:一个开源的分布式服务发现和配置管理工具,也可用作配置中心。支持多种配置文件格式,提供健康检查、故障转移和动态变更等功能,
(5)Etcd:一个分布式键值存储系统,可用作配置中心。它使用基于Raft算法的一致性机制,提供分布式数据一致性保证
(6)Apollo:携程开源的配置中心,支持多种语言和框架。提供细粒度的配置权限管理、配置变更通知和灰度发布等高级特性,还有可视化的配置管理界面。
5.Nacos配置中心的原理
配置中心,说白了就是一句话:配置信息的CRUD
具体的实现:
(1)配置信息存储:Nacos默认使用内嵌数据库Derby来存储配置信息,还可以采用MySQL等关系型数据库
(2)注册配置信息:服务启动时,Nacos Client会向Nacos Server注册自己的配置信息,这个注册过程就是把配置信息写入存储,并生成版本号。
(3)获取配置信息:服务运行期间,Nacos Client通过API从Nacos Server获取配置信息。Server根据键查找对应的配置信息,并返回给Client。
(4)监听配置变化:Nacos Client可以通过注册监听器的方式,实现对配置信息的监听。当配置信息发生变化时,Nacos Server会通知已注册的监听器,并触发相应的回调方法。
6.Nacos配置中心长轮询机制
- 一般来说客户端和服务端的交互分为两种:推(Push)和拉(Pu),Nacos在Pul的基础上,采用了长轮询来进行配置的动态刷新。
- 在长轮询模式下,客户端定时向服务端发起请求,检查配置信息是否发生变更,如果没有变更,服务端会"hold"住这个请求,即暂时不返回结果,直到配置发生变化或达到一定的超时时间。
- 长轮询机制结合了 Pull 机制和 Push 机制的优点
具体的实现过程:
如果客户端发起 Pull 请求,服务端收到请求之后,先检查配置是否发生了变更:
- 变更:返回变更配置
- 无变更:设置一个定时任务,延期 29.5s执行,把当前的客户端长轮询连接加入 allSubs 队列
在这 29.5s 内的配置变化:
- 配置无变化:等待 29.5s后触发自动检查机制,返回配置;
- 配置变化:在 29.5s内任意一个时刻配置变化,会触发一个事件机制,监听到该事件的任务会遍历 allsubs 队列,找到发生变更的配置项对应的 ClientLongPoling 任务,将变更的数据通过该任务中的连接进行返回。相当于完成了一次 PUSH 操作;
7.关联文章
如此等等的资料我都已经整理到了思维导图中,本篇属于SpringCloud篇,有需要的可以去看一下,喜欢的就留个三连再走吧~
SpringCloud:https://blog.youkuaiyun.com/TLOVEYOUTOO/article/details/145532603?spm=1001.2014.3001.5502
Spring全家桶:
https://blog.youkuaiyun.com/TLOVEYOUTOO/article/details/145532922?spm=1001.2014.3001.5502