文章目录
1.简介
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在 Spring Cloud中,有分布式配置中心组件 spring cloudconfig,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。
在 spring cloud config组件中,分两个角色,一是 config server,二是 configclient。Config Server.是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。
2.解决的问题
由于分布式项目服务众多,配置文件众多,要是配置文件修改后还要再次跟新部署到线上,Spring Cloud Config将配置文件统一放到git或svn远端仓库,只要修改远端仓库库中的配置文件,对应服务就可以读取到便跟后的配置文件,避免的需要手动跟新服务器上的配置文件,简化运维负担。
运行的服务读取配置文件流程:
3.快速使用
3.1配置服务器端来获取远端仓库的配置文件
本次仓库地址使用的为码云。
(1)登陆码云创建仓库上传配置文件
配置文件命名规则:(必须以-连接)
{application}-{profile}.yml或{application}-{profile}.properties
application为应用名称,profile为开发环境(用于区分测试环境、生产环境等)。
(2)新建读取配置文件的微服务模块,添加pom的依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
(3)编写配置文件
server:
port: 9996
spring:
application:
name: diplomaproject-config
cloud:
config:
server:
git:
uri: https://gitee.com/xbf392/diplomaproject.git
username: ******
password: ****** #改成自己的密码
basedir: F:\data\diplomaproject-config #从远端Git缓存下来的配置文件下载地址
(4)编写启动类
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableConfigServer
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class);
}
}
(5)运行项目查看
3.2配置微服务成为客户端读取服务端获得的配置文件
(1)导入pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
(2)新建bootstrap.yml配置文件
bootstrap.yml的优先级比application.yml的优先级要高,application.yml可以删除了,让这个服务使用远端仓库的配置文件。
spring:
cloud:
config:
name: dipuser
profile: dev
label: master
uri: http://localhost:9996 #为配置的server服务的地址
这几个参数的获取应与远端仓库的文件一致。
(3)启动eureka 、configserver、和测试的微服务
此时已经删除了application.yml,读取的配置文件是远端gitee仓库中的配置文件。