Spring Cloud学习:06高可用分布式配置中心(Config Cluster)


声明:本文转载自https://my.oschina.net/LaravelShao/blog/1583369,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

1 高可用问题

1.1传统方式解决高可用

在生产环境中,Config Server与服务注册中心一样需要扩展为高可用集群。在先前实现的config-server基础上来实现高可用非常简单,不需要为这些服务端做任何额外配置,只需要遵守一个配置规则:将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server地址时,只要配置Config Server外的负载均衡即可,就像如下图所示的结构:

1.2注册为服务方式

虽然通过服务端负载均衡已经能够实现,但是作为架构内的配置管理,本身其实也可以看作架构中的一个微服务。所以,另外一种方式更为简单的方法就是把config-server也注册为服务,这样所有客户端就能以服务的方式进行访问。通过这种方法,只需要启动多个指向同一Git仓库的config-server就能实现高可用。

2 创建注册中心(Eureka Server)

2.1基于之前工程,创建新模块eureka-server,用作服务注册中心,选择Spring Initializr->Cloud Discovery-> Eureka Server,并添加以下依赖:

<dependencies>    <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-eureka-server</artifactId>    </dependency>    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-test</artifactId>       <scope>test</scope>    </dependency> </dependencies> 

2.2 添加服务注册中心配置:

server:   port: 8889  eureka:     instance:       hostname: localhost     client:       register-with-eureka: false # 是否注册到eureka       fetch-registry: false # 是否从eureka获取注册信息       serviceUrl:           # eureka服务器地址(注意:地址最后面的 /eureka/ 是固定值)           defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 

2.3 启动类添加@EnableEurekaServer注解

@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication {      public static void main(String[] args) {         SpringApplication.run(EurekaServerApplication.class, args);     } } 

3 改造配置中心(Config Server)

3.1 修改config-server模块,pom文件添加spring-cloud-starter-eureka依赖:

<dependencies>    <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-config-server</artifactId>    </dependency>    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-test</artifactId>       <scope>test</scope>    </dependency>    <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-eureka</artifactId>    </dependency> </dependencies> 

3.2 配置文件添加服务注册中心地址:http://localhost:8889/eureka/

server:     port: 8888  spring:     application:       name: config-server     # 配置中心     cloud:       config:         server:           git:             uri: https://github.com/laravelshao/spring-cloud-config-repo # cloud配置仓库地址             search-paths: spring-cloud-learning # 配置仓库路径             username: # 公开仓库可不填写             password: # 公开仓库可不填写         label: master # 配置仓库分支  eureka:     client:       service-url:         defaultZone: http://localhost:8889/eureka/ # 配置eureka服务器地址 

3.3 启动类添加@EnableEurekaClient注解

@SpringBootApplication @EnableConfigServer @EnableEurekaClient public class ConfigServerApplication {      public static void main(String[] args) {         SpringApplication.run(ConfigServerApplication.class, args);     } } 

4 改造配置客户端(Config Client)

4.1 修改config-client模块,pom文件添加spring-cloud-starter-eureka依赖:

<dependencies>    <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-config</artifactId>    </dependency>    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-test</artifactId>       <scope>test</scope>    </dependency>    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-eureka</artifactId>    </dependency> </dependencies> 

4.2 配置文件bootstrap.yml中添加以下配置:

  • spring.cloud.config.discovery.enabled:配置是否从配置中心读取文件
  • spring.cloud.config.discovery.serviceId:配置中心服务id
  • eureka.client.serviceUrl.defaultZone:配置eureka服务器地址
server:     port: 8881  spring:     application:       name: config-client     cloud:       config:         uri: http://localhost:8888/ # 配置服务中心地址         label: master # 远程仓库分支         profile: dev # 指定环境         discovery:           enabled: true # 从配置中心读取文件           service-id: config-server # 配置中心服务id eureka:   client:     serviceUrl:       defaultZone: http://localhost:8889/eureka/ # 配置eureka服务器地址 

4.3 依次启动eureka-server、config-server、config-client模块,访问http://localhost:8889/

访问http://localhost:8881/hi,结果:

说明从配置中心获取到配置数据。

本文发表于2017年12月01日 12:33
(c)注:本文转载自https://my.oschina.net/LaravelShao/blog/1583369,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2382 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1