一.简介

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


springcloud Hoxton 能用eureka吗_Cloud

高可用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”给服务实例,通过消息组件,通知其他服务更新配置。