史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
示意图
config-server
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
启动类上添加@EnableConfigServer注解开启配置服务器的功能
配置文件
spring:
application:
name: config-server
cloud:
config:
label: master
server:
git:
uri: https://github.com/MyBrokenHeart/springcloudconfig.git
search-paths: test1,test2
username:
password:
server:
port: 8888
spring.cloud.config.server.git.uri:配置git仓库地址
spring.cloud.config.server.git.searchPaths:配置仓库路径,可以配置多个
spring.cloud.config.label:配置仓库的分支
spring.cloud.config.server.git.username:访问git仓库的用户名
spring.cloud.config.server.git.password:访问git仓库的用户密码
如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
http请求地址和资源文件映射如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
例如https://github.com/MyBrokenHeart/springcloudconfig/tree/master/test1
application为spring.application.name
{profile}不同开发环境下的配置,有sample, dev, test, prd
- dev:开发环境配置文件
- test:测试环境
- pro:正式环境
config client
只需引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
需添加配置文件bootstrap.properties
spring.application.name=haha
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri= http://localhost:8888/
Spring读取顺序bootstrap.properties在application.yml前
spring.application.name为你要读取文档的名字,一定要对应上
spring.cloud.config.profile为读取的环境配置,不配置的话默认读取haha.yml
label为要读取的分支
无论是yml还是properties格式都是可以,要注意文件里面的格式一定要对,否则会读取不到,本人就因为这个问题浪费了一个小时
通过@Value即可读取到内容
github地址为https://github.com/MyBrokenHeart/springcloudconfig
@Value("${haha}")
private String foo;
如果要搭建高可用的高可用的分布式配置中心,即通过eureka注册服务,多个服务调用时负载平衡,如下
很简单,只需将config-server和config-client都注册到eureka中
在client的bootstrap.properties中加上
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.discovery.enabled 是从配置中心读取文件。
spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名而不是ip
如果配置服务部署多份,通过负载均衡,从而高可用