一.简介
1.简介
分布式系统中每一个微服务,其本身的 application.yml 配置文件中都写入了很多的运行环境相关的配置。例如,提供者中会有数据源的配置,所要连接的 Eureka 服务器地址等信息;消费者中会有 Eureka 服务器地址、Hystrix 配置信息等。对于同一个分布式系统,每个提供者中的这些配置都是相同的,每个消费者中的这些配置都是相同的,即存在大量的冗余。这些冗余会使将来的运维工作量量变得非常庞大。
Spring Cloud 为我们提供了集中式的、动态的配置管理,即 Spring Cloud Config 配置中心。
Config Service可以从本地仓库获取配置文件,也可以从远处Git仓库读取。本地仓库是指将所有的配置文件统一写在Config Service工程目录下。Config Service暴露HTTP API接口,Config Client通过调用Config Service的HTTP API接口来读取配置文件。
2.创建config-server
添加pom.xml:
<
启动类:
@EnableConfigServer
配置文件application.yml:
spring:
在resources目录下建一个shared文件夹,添加config-client-dev.yml文件:
server:
3.构建config-client
添加pom.xml:
<
配置bootstrap.yml:
spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:8040
fail-fast: true
profiles:
active: dev
ConfigClientApplication启动类:
@RestController
启动eureka-service、eureka-client、config-server、config-client。访问:http://localhost:8041/foo,打印:foo version 1。可见:config-client工程成功地向eureka-server工程读取了配置文件中的foo变量的值。
二.config-server读取Git库中的配置文件
application.yml配置:
spring:
三.构建高可用的Config Server
高可用Config Server
1.构建eureka-server
新建eureka-server,导入pom.xml:
<
配置application.yml:
server:
配置启动类:
@EnableEurekaServer
2.配置config server
导入pom.xml文件:
<
启动类:
@EnableEurekaClient
application.yml:
server:
3.配置config-client
pom.xml,同上,添加spring-cloud-starter-eureka、@EnableEurekaClient。
application.yml:
spring:
启动eureka-service、eureka-client、config-server、config-client。访问:http://localhost:8041/foo,打印:foo version 1。
四.使用Spring Cloud Bus刷新配置
1.简介
Spring Cloud Bus是用轻量的消息代理将分布式的节点连接起来,可用于广播配置文件的更改或者服务的监控管理。一个关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间的通信。Spring Cloud Bus可选的消息代理组件包括RIbbitMQ、Kafka等。
如果有几十个微服务,每一个服务又是多实例,当更改配置时,需要重新启动多个服务实例。当远程的Git仓库的配置更改后,只需要Spring Cloud Bus发送“/bus/refresh”给服务实例,通过消息组件,通知其他服务更新配置。