欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 SpringCloud之Config配置中心理论篇

程序员文章站 2022-04-15 19:54:42
1.分布式配置中心1.1 什么是分布式配置中心首先我们可以先理解下配置中心,配置中心就是集中管理配置文件的一个系统,分布式配置中心就是管理分布式项目配置文件的系统,将各个项目中的配置文件抽出来,然后集中管理,比如说我们的数据源配置,redis配置,mongodb配置,kafka配置等等这些配置信息抽离出来,然后交给分布式配置中心来管理这些配置信息。1.2 出现的背景随着微服务架构的普及,服务根据不同的拆分粒度拆分的越来越多,服务的管理难度就会增大,配置信息的管理就在其中,比如说我们有这么一个需求,需...

1.分布式配置中心

1.1 什么是分布式配置中心

首先我们可以先理解下配置中心,配置中心就是集中管理配置文件的一个系统,分布式配置中心就是管理分布式项目配置文件的系统,将各个项目中的配置文件抽出来,然后集中管理,比如说我们的数据源配置,redis配置,mongodb配置,kafka配置等等这些配置信息抽离出来,然后交给分布式配置中心来管理这些配置信息。

1.2 出现的背景

随着微服务架构的普及,服务根据不同的拆分粒度拆分的越来越多,服务的管理难度就会增大,配置信息的管理就在其中,比如说我们有这么一个需求,需要公司所有的项目进行安全加固,然后将mongodb的密码升级,我们要怎么做,需要挨个修改每个服务里的mongodb配置信息吗,服务少还可以,如果上百上千,就不能手动改了吧,这时候配置中心的作用就体现出来了,你只需要修改下公共的配置,然后就可以同步到所有的需要的服务中,而且还不用停机。
再来一个场景,咱们在开发过程中,有数据库配置,redis,mongo,注册中心,消息中间件等等这一坨配置,然后还有各种环境,比如说开发环境,测试环境,预发布环境,生产环境等。这些配置信息维护起来就比较麻烦了,尤其是在那么多服务的情况下,每个服务里都要维护这么多信息,如果使用了配置中心,我们可以放四套配置文件,分别用作不同的环境,然后不同环境下面各个中间件,数据源不同,这样我们只需要集中维护就可以了,不需要再在每个项目中做这些维护工作。

1.3 分布式配置中心功能

  1. 配置中心本职工作就是对配置信息的管理,需要提供对配置信息增删改查的功能,不管是文件操作还是ui界面操作
  2. 配置中心还应当拥有通知的功能,比如说配置文件信息修改了,然后想立即生效,就需要通知给将配置信息交由配置中心的项目,至于该项目做什么事情,就是自定义的了。
  3. 分布式配置中心需要保证自己的可用性

1.4 分布式配置中心通用架构

荐
                                                        SpringCloud之Config配置中心理论篇
分布式配置中心一般分为server端与client 端
server端:其实就是配置中心的一个管理系统,提供了对配置信息增删改查的功能。
client端:这个client端就是我们的各个服务,当我们服务启动的时候,需要去配置中心server端拉取配置。

2.SpringCloud Config介绍

2.1 SpringCloudConfig概述

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。

Server支持将配置文件放到GIT或SVN等版本库里,支持对配置信息的增删改查,配置文件有了改动,Server能够感知到。
Client可以选择不同的label使用不同环境的配置信息。

2.2 工作流程

荐
                                                        SpringCloud之Config配置中心理论篇
我们这里这个config server 是个单独的服务,也需要注册到配置中心去,当服务client服务启动的时候,回去配置中心config server 中拉取对应的配置信息,而这个config server 去git或者svn上面拉取配置信息,返回给client端。
当我们这个git或者svn中的配置文件修改的时候,从config server 能拿到最新的配置信息,对于client 端来说,在不停机的情况下需要动态刷新下,才能够拿到最新的配置信息,这个动态刷新可以是我们手动refresh,也可以借助SpringCloud Bus来实现动态刷新,我们会在实践篇接触到。

2.3 个人对它的见解

有两个点是我比较像吐槽的,一是这个配置文件的修改是在git或者svn上改的,没有自己的一个管理平台,Apollo,Nacos比起来显得有点low。
二就是,配置文件修改了之后,即使使用了Spring Cloud Bus 这个组件,还是需要自己手动请求一个更新链接来触发更新通知,low,说白了还是没有管理界面的锅。

3. 市面的配置中心介绍

这里我们就简单的谈下,后面会有文章专门介绍这几款配置中心

3.1 Apollo

Apollo是由携程开源的分布式配置中心。特点有很多,比如:配置更新之后可以实时生效,支持灰度发布功能,并且能对所有的配置进行版本管理、操作审计等功能,提供开放平台AP。同时我个人还是比较喜欢这个Apollo的,管理平台看着比较舒服,然后使用起来也简单,这个我们后续会出几篇文章来讲解Apollo ,毕竟我司也使用的它。

3.2 Nacos

SpingCloud Alibaba技术栈中的一个组件,是阿里开源的一个分布式配置中心与注册中心组件,这个Nacos可以用作注册中心又可以用作配置中心,一个组件解决了分布式系统架构两大难题。

3.3 Disconf

Disconf是由百度开源的分布式配置中心。基于Zookeeper实现配置变更后实时通知和生效。

本文地址:https://blog.csdn.net/yuanshangshenghuo/article/details/107348669