配置服务器默认采用git来存储配置信息,也可以本地存储。
配置中心配置
1. pom.xml中加入spring-cloud-config-server,spring-cloud-starter-eureka
2. 主类中配置@EnableConfigServer @EnableEurekaClient
3. application.yml配置
spring.application.name=config-server
server.port=60002
eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/
4. 若使用本地存储:
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=classpath:/config
在resource目录下创建config目录,里面配置clientA-dev.yml,clientA-test.yml等
5. 若使用git存储:
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringBoot-Learning/
spring.cloud.config.server.git.searchPaths=Chapter9-1-4/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password
uri:配置git仓库位置;searchPaths:配置仓库路径下的相对搜索位置,可以配置多个;username:访问git仓库的用户名;password:访问git仓库的用户密码
客户端A配置
1. pom.xml中加入spring-cloud-starter-eureka,spring-cloud-starter-config
2. spring.application.name=clientA
spring.cloud.config.enabled=true
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
spring.cloud.config.profile=dev
spring.cloud.config.label=master
eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/
解释:
配置中心的{application}-{profile}.properties配置文件,{label}对应git上不同的分支,默认为master。
spring.application.name:对应{application}部分
spring.cloud.config.profile:对应{profile}部分
spring.cloud.config.label:对应git的分支。如果配置中心使用的是本地存储,则该参数无用
spring.cloud.config.uri:配置中心的具体地址(不建议使用,因为不利于负载均衡)
spring.cloud.config.discovery.service-id:指定配置中心的service-id,便于扩展为高可用配置集群。
特别注意:上面这些与spring-cloud相关的属性必须配置在bootstrap.properties中,config部分内容才能被正确加载。因为config的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties。例如上面的defaultZone如果不配置,则找不到service-id,会导致启动失败。
配置中心集群:
1. config-server主类配置@EnableEurekaClient,并启动多个,相当于有多个配置中心注册在服务中心;
2. config-client的properties配置中使用spring.cloud.config.discovery.service-id指定config-server,实现负载均衡。如此,任意一个config-server节点crash了也不影响config-client的运行。
配置实时刷新
配置中心的数据修改后,客户端可实时获取更新内容,实现方式:
1. config-client的pom.xml中新增spring-boot-starter-actuator监控模块,其中包含了/refresh刷新API。
2. git中配置数据修改后,config-client中执行http://localhost:18443/refresh 即可实现client端配置数据更新
实例源码: config-server