一、Spring Cloud Config简介
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是configclient。
Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。
Config Client是Config Server的客户端,用于操作存储在Config Server中的配置内容。
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。方便部署与运维。微服务在启动时会请求Config Server获取配置文件的内容,请求到后再启动容器。
优点:
- 集中管理配置文件
- 不同环境不同配置,动态化的配置更新
- 运行期间,不需要去服务器修改配置文件,服务会想配置中心拉取自己的信息
- 配置信息改变时,不需要重启即可更新配置信息到服务
- 配置信息以 rest 接口暴露
二、配置中心实现
2.1 将配置文件提交到码云
(1)浏览器打开gitee.com,注册用户 ,注册后登陆码云管理控制台
(2)创建项目 “你的项目名” (点击右上角的加号 ,下拉菜单选择创建项目)
(3)上传配置文件,将demo_base工程的application.yml改名为base-dev.yml后上传到仓库
(4) 点击克隆/下载按钮 复杂链接地址 备用
2.2 配置服务端
(1)右键点击父工程>new>module创建demo_config模块
(2)pom.xml引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
(3)编写配置文件application.yml,uri 处填写之前复制的链接地址
server:
port: 9999
spring:
application:
name: demo-config
cloud:
config:
server:
git:
uri: https://gitee.com/kannaoku0/springcloud_demo.git
username: 你的账号 #如果建立的仓库是公开的,则不需要设置账户和密码
password: 你的密码
(4)创建启动类ConfigServerApplication,添加注解 @EnableConfigServer
(5)启动demo_config,浏览器输入 http://localhost:9999/base-dev.yml,能够看到配置内容
到此,我们的服务端demo_config就配置完成了,接下来配置客户端
2.3 配置客户端
(1)在demo_base工程pom.xml添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
(2)resources目录下新建 bootstrap.yml,并删除原来的 application.yml
配置中的 name: base profile: dev label: master是和git上面的目录对应起来的
(3)测试 依次启动 Eureka,demo_config再启动demo_base ,按之前的方式访问,浏览器输入 http://localhost:9001/test/111
再次观察demo_based的配置文件,并没有端口,服务名等,说明在启动时他是通过demo_config 从Git上面将配置文件获取到了,自此,我们的配置中心 Spring Cloud Config 配置成功。