Spring Cloud Config 配置中心,实现配置服务。开发者可以使用配置服务器集中地管理所有服务的各种环境配置文件。配置服务中心默认采用Git的方式进行存储,可以对环境配置进行版本管理。
1 Spring Cloud Config 入门
maven依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
在Application类加上@EnableConfigServer注解
application.yml 配置如下:
server:
port: 9010
spring:
application:
name: config
cloud:
config:
server:
git:
uri: git仓库地址
username: 账号
password: 密码
1.1 创建应用配置文件
为eureka、provider、consumer、zuul等微服务创建配置文件。(原项目配置文件可删除。)
图 git 仓库中的配置文件
application.yml:
logging:
level:
org:
springframework: INFO
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8060/eureka
provider.yml:
eureka:
client:
register-with-eureka: true
fetch-registry: false
message: hello provider
provider-dev.yml
message: hello provider-dev
对于上面的微服务项目,还需要加上下面的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
1.1.1 引导上下文
bootstrap.yml(或properties),Spring Boot应用启动时会根据这个配置文件加载属性并进行解析。对于上面的服务,我们需要在这个配置文件中,配置好端口号、服务名称、配置服务器地址及所启用的profile等。
consumer服务的bootstrap.yml
server:
port: 8080
spring:
application:
name: consumer
cloud:
config:
uri: http://localhost:9010
配置好微服务的bootstrap.yml后,依次启动config、eureka、provider、consumer、zuul微服务。
2 配置资源库
Spring Cloud Config 默认使用Git库作为配置资源库。
2.1 配置规则
微服务启动时,会读取配置的bootstrap.yml文件,配置服务器从git仓库中拉起配置信息,有三个配置比较关键:1)应用名称{application} (spring.application.name)、环境名{profile} (spring.profiles.active)、标签{label} (spring.cloud.config.lable)。
比如provider服务,应用名为provider,环境名为dev(可配置多个,用逗号隔开)。那么配置服务器将会为其从git仓库中拉取provider.yml、provider-dev.yml配置文件。标签则觉得了从哪个代码分支下拉取。
2.2 整合Eureka
配置服务可以像普通微服务一样,注册到Eureka中。需要进行如下的修改:
1、配置服务config增加对Eureka的依赖,并在Application类中,添加@EnableDiscoveryClient注解。
2、配置服务的bootstrap.yml中,添加eureka的服务器地址
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8060/eureka
3、对于其他(除Eureka、config)服务,bootstrap.yml中,添加对eureka的服务器地址。并修改config的服务地址,由ip+端口访问,改为服务名称访问。(下面示例为provider服务)
spring:
profiles:
active: default
application:
name: provider
cloud:
config:
discovery:
enabled: true
service-id: config
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8060/eureka