SpringCloud的配置中心,一篇文章带你读懂配置中心及其连带问题

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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值