Spring Cloud是Spring旗下的项目之一
Spring Cloud并不是一个组件 而是许多组件的集合
其将当下非常流行的一些技术整合到了一起 实现了多个分布式开发中的重要功能
协调了分布式环境中各个系统 并且为各类服务提供模板性的配置
其主要涉及的组件包括:
除此之外 还有一些很有用的组件 比如Spring Cloud Config和Spring Cloud Bus
【在本篇中 将介绍Spring Cloud Config分布式配置中心】
在分布式系统中由于服务数量非常多 配置文件分散在不同的微服务项目中 管理不方便
为了方便配置文件集中管理 就需要用到分布式配置中心组件
Spring Cloud还提供了Spring Cloud Config 它支持将配置文件放在配置服务的本地 也支持放在远程Git仓库中(如Github或码云)
使用Spring Cloud Config分布式配置中心后的架构如下图:
首先 创建git仓库 码云和Github都可以 这里以码云为示例:
新建一个文件作为配置文件:
配置文件的命名方式:{application}-{profile}.yml 或 {application}-{profile}.properties
添加配置中心的Maven依赖:
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-config-serverartifactId>
dependency>
用@EnableConfigServer
注解开启SpringCloud配置中心服务:
@SpringBootApplication
// 开启SpringCloud配置中心服务
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class,args);
}
}
在配置文件中进行配置:
由于配置中心本质上也是一个微服务 因此 同样需要注册到Eureka服务注册中心
然后需要指定你自己的git仓库的地址 如果是私有的仓库 还需要配置你的用户名和密码
当然 如果是公用仓库 则注释掉username和password即可
server:
port: 12000
spring:
application:
name: config-server
cloud:
config:
server:
# 指定git仓库的地址
git:
uri: https://gitee.com/zhangsan/spring-cloud-config.git
username: zhangsan
password: 123456789
eureka:
client:
service-url:
# 设置Eureka服务的默认地址
defaultZone: http://127.0.0.1:10086/eureka
测试成功:
若在git仓库中修改了配置文件的内容 那么在配置中心服务中也会及时更新
搭建完毕 那么接下来就是在项目中使用了
配置文件信息不再由微服务项目提供 而是直接从配置中心获取
首先 在要使用配置中心服务的项目中添加配置中心的启动器依赖:
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-configartifactId>
<version>2.1.1.RELEASEversion>
dependency>
接下来 就可以将原来的保存在本地的配置文件删除了
然后创建一个配置文件 名为bootstrap.yml 这是SpringBoot工程中默认的配置文件
其用于配置一些项目中较为固定的配置项 若是经常变动的配置项 则应配置于git上的配置文件中
在bootstrap.yml中编写配置:
spring:
cloud:
config:
# 与仓库中的配置文件的application名称保持一致
name: user
# 与仓库中的配置文件的profile名称保持一致
profile: dev
# 与仓库中的配置文件的所属版本或分支保持一致
label: master
discovery:
# 开启使用配置中心 默认未开启
enabled: true
# 配置中心的服务名 要与当前项目的配置中心模块的application name保持一致
service-id: config-server
eureka:
client:
service-url:
# 设置Eureka服务的默认地址
defaultZone: http://127.0.0.1:10086/eureka