2025年配置中心的原理(配置中心能放哪些内容)

配置中心的原理(配置中心能放哪些内容)在常规的开发中 每个微服务都包含代码和配置 其配置包含服务配置 各类开关和业务配置 如果系统结构中的微服务节点较少 那么常规的代码 配置的开发方式足以解决问题 当系统逐步迭代 其微服务会越来越复杂 慢慢演化成网状依赖结构 这个时候常规的代码 配置的开发方式就并不合适了 因为还要考虑整体系统的扩展性 伸缩性和耦合性等 这些问题中 配置的管理也是非常麻烦的 如果还是以常规开发形式管理配置

大家好,我是讯享网,很高兴认识大家。



在常规的开发中,每个微服务都包含代码和配置。其配置包含服务配置、各类开关和业务配置。如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题。当系统逐步迭代,其微服务会越来越复杂,慢慢演化成网状依赖结构,这个时候常规的代码+配置的开发方式就并不合适了,因为还要考虑整体系统的扩展性、伸缩性和耦合性等。这些问题中,配置的管理也是非常麻烦的。

如果还是以常规开发形式管理配置,则要承担反复修改编译代码、重启系统、重新打包等风险。所以,一个可以集中管理,带有版本控制的配置中心应运而生。

Spring Cloud Config就是一个分布式配置中心解决方案。其采用集中式管理每个微服务的配置信息,并使用GIT等版本仓库统一存储配置内容,实现版本化管理控制。

提供服务端和客户端支持(spring cloud config server和spring cloud config client)

集中式管理分布式环境中的配置信息(所有配置文件统一放在了gitee中)

基于spring环境提供配置管理,与spring系列框架无缝结合

可用于任何语言开发环境,基于Http协议。

默认基于GIT仓库实现版本控制。

本课程中以gitee作为远程仓库。也可以使用其他git支持的远程仓库。

角色说明,在Spring Cloud Config中包含两个角色:

Spring Cloud Config Server:负责接收Config Client请求,根据请求从GitEE中获取到配置文件。

Spring Cloud Config Client:之前所写的包含配置文件的项目都是Config Client。

流程如下:

需要把项目的配置文件上传到Gitee中。(课堂上直接在gitee进行在线编写配置文件,省去使用git上传配置文件到gitee的过程)

Config Client 通过Rest访问 Config Server ,Config Server在去访问Gitee

二、 在Gitee中创建配置文件

配置文件可以在本地创建后使用git上传。在学习过程中更加简单的方式是直接在gitee中创建文件,编辑内容。

仓库名称随意。示例中仓库名字为config

是否生成readme文件对于Spring Cloud Config没有影响。

仓库是public还是privage也没有影响。示例中使用public演示。

点击创建按钮即可创建一个仓库。

编写内容如下:文件名为bjsxt.yml

配置中心支持Spring Boot文件格式:文件名-profile.yml。其中profile代表环境,支持完全自定义。常用的有dev、test等。

Config Server主要的任务是从Git(远程或本地仓库)获取到配置文件,Config Client通过REST获取到配置文件的内容。

可以使用刚刚搭建好的Gitee上得仓库进行使用。

如果只是访问远程git仓库,对外暴露url的功能,只需要添加spring-cloud-config-server依赖(包含了spring-boot-starter-web)

此处要注意,新建bootstrap.yml配置文件,该配置文件是Spring Cloud提供的一个专门加载外部资源的配置文件。该配置文件应该如在classpath中(resources)。加载顺序高于application.yml配置文件。但是application.yml配置文件中内容会覆盖bootstrap.yml中内容。

使用 Spring Cloud Config 配置中心时,需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;

新建启动类com.bjsxt.ConfigServerApplication

说明:配置文件结构 name-profile.yml。例如:application-redis.yml。其中application是name,redis是profile。

其中master为默认分支,如果没有新建分支,master为默认分支名(主分支)。但是如果访问的是不带profile的配置文件,master就不能省略。如果访问的是带有profile的配置文件master可以省略,省略后返回json字符串中label属性为null,正常应该为master。

localhost:9001/bjsxt/master 出现下面结果

localhost:9001/bjsxt/test/master


讯享网

Config Client对于Spring Cloud Config是客户端,对于Eureka来说可以是Application Server 也可以是Application Client,示例中没有向Eureka注册,但同学们要知道在现有代码基础上添加Eureka配置即可。

示例代码以加载gitee中的bjsxt-test.yml文件进行举例,如果加载到里面my.content表示加载成功。

新建项目ConfigClientDemo

新建bootstrap.yml。

spring.cloud.config中

uri: Config Server访问url。默认值http://localhost:8888

name:gitee中配置文件名称。name-profile.yml中name

profile: 配置文件的profile。name-profile.yml中profile,默认值default。如果服务端有一个name-default.yml文件将会加载此文件,不在加载name.yml。可以通过配置profile:’’形式让其加载name.yml。

label:分支,默认master。

新建com.bjsxt.ConfigClientApplication

新建com.bjsxt.service.DemoService

新建com.bjsxt.controller.DemoController

在浏览器地址访问:

观察结果是否打印:bjsxt-test

Config-client客户端服务应用,在启动的时候,会根据bootstrap配置内容远程访问config-server,获取当时的最新的配置内容。如果config-client运行过程中,GIT仓库中的配置内容发生变更,config-client不会自动的加载刷新配置内容。需要人为干预。重启服务,一定会刷新配置。但是重启服务代价太高。这时就可以使用热刷新。

热刷新指的是服务不重启,不间断对外提供服务,而是重新加载配置内容,初始化应用环境。

因为Spring Boot只有在启动时才加载一次配置文件,所以gitee上配置文件修改了,项目也不会实时跟随变化。既然是Spring Boot的问题,可以使用Spring Boot提供的Actuator来实现刷新项目功能。

就需要依赖spring-boot-starter-actuator启动器来实现。

需要在bootstrap.yml配置文件中增加配置。

在使用远程配置内容的类上(案例中的Service,放在controler上无效)增加新注解.

@RefreshScope

修改gitee中bjsxt-test.yml中内容,把bjsxt-test修改为bjsxt-test1

Actuator的refresh需要使用post进行访问,借助postman实现

六、 结合Git使用

同学们可能已经发现,如果直接在Gitee中新建配置文件,提示编译等功能都没有,出现编写错误的可能性比较大。如果我们可以在一个项目中把配置文件编写完成后在提交到远程git仓库的话,大大减少出错的概率,同时提升了开发效率。

前提:在本机中安装git。

演示时提供了两种方式:

1. 使用终端git命令进行操作

2. 使用IDEA可视化功能实现

随意新建一个项目,此项目应该包含分布式配置中心管理项目的全部依赖。只有这样才能保证在当前项目中编写配置文件时有对应提示。

在项目的resources下新建文件夹,文件夹的名称要和Gitee中仓库名称对应。示例中叫做testconfig。在testconfig下新建suiyi-abc.yml的配置文件。

菜单File -> Settings -> Version Control -> Git 选择Git安装路径。安装好git后重启IDEA即可自动加载本机GIT。

如果没有Terminal面板可以在菜单View -> Tools Windows ->Terminal找到。

默认路径是项目的根路径,此面板和CMD等效。里面写的是Windows命令

通过cd命令进入到testconfig目录中

强调:

要求仓库是没有readme.md。如果有的还需要进行pull操作。

建议:

在gitee上新建不包含readme的仓库,按照仓库主页面命令提示进行操作。

1. 步骤一

初始化配置,会把信息写入到C:Userssmallming.gitconfig 。只需要写一次。如果之前已经配置过,就不需要配置了。

注意改成自己账号的信息

git config –global user.name “smallming”

git config –global user.email “@.com”

2. 步骤二

初始化testconfig文件夹,生成git相关信息

git init

把配置文件添加到本地仓库

git add suiyi-abc.yml

3. 步骤三

添加提交信息

git commit -m “自己写提交信息”

设置远程地址。注意要把红色部分换成自己的

git remote add origin 

提交到远程仓库

git push -u origin master

修改配置文件suiyi-abc.yml后,右键文件-> Git -> add 添加到本地仓库

选择提交

在弹出框中进行操作

点击push按钮

配套资源:

尚学堂-分布式亿级高并发电商项目教程_微服务/高并发/分布式/大数据/缓存技术/spring/springmvc/mybatis/dubbox/分布式框架

文章作者:北京尚学堂
文章来源:知乎


小讯
上一篇 2025-05-13 17:38
下一篇 2025-06-03 15:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/182809.html