Spring Cloud Learning | 第十一篇:高可用的分布式配置中心

本文介绍如何利用 Spring Cloud Config 实现配置中心的高可用部署,并详细讲解了通过服务注册中心 Eureka 来管理配置服务的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 简介

      在上一篇文章中,我们已经知道如何搭建分布式配置中心。但是,当要将配置中心部署到生产环境中时,与服务注册中心一样,我们也希望它是一个高可用的应用。Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式。

      第一种是传统模式。不需要为这些服务端做任何额外的配置,只需要遵守一个配置规则,将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护。而客户端在指定Config Server位置时,只需要配置Config Server上层的负载均衡设备地址即可,就如同下图所示的结构:


     

       第二种是服务模式。除了上面这种传统的实现模式之外,我们也可以将Config Server作为一个普通的微服务应用,纳入Eureka的服务治理体系中。这样我们的微服务应用就可以通过配置中心的服务名来获取配置信息,这种方式比起传统的实现模式来说更加有利于维护,因为对于服务端的负载均衡配置和客户端的配置中心指定都通过服务治理机制一并解决了,既实现了高可用,也实现了自维护。此时架构如下:


      接下来我们具体来实现第二种方法。


二. 具体实现

2.1 首先准备我们前面文章一直使用的服务注册中心工程eureka-server。


2.2 修改config-server

      在工程pom.xml加上spring-cloud-starter-eureka依赖:

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>


      修改application.properties文件,添加服务注册中心地址等配置信息:
spring.application.name=config-server
server.port=8888

# git仓库地址
spring.cloud.config.server.git.uri=https://github.com/lingd3/SpringcloudConfig
# 仓库路径
spring.cloud.config.server.git.searchPaths=respo
# 仓库分支
spring.cloud.config.label=master
# 访问git仓库的用户名和密码,若git仓库是公开仓库,可以不用填写用户名和密码,否则需要
spring.cloud.config.server.git.username=lingd3
spring.cloud.config.server.git.password=

# 配置服务注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

      最后在启动类上加上@EnableDiscoveryClient注解即可。


2.3 修改config-client

      作为Eureka客户端,同样在工程pom.xml加上spring-cloud-starter-eureka依赖:

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

      修改配置文件bootstrap.properties:

spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
server.port=8881

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server

      这里需要注意的是上面的serviceId参数时绑定服务名config-server,而不是具体的ip地址。

      最后在启动类上加上@EnableDiscoveryClient注解。


2.4 结果

      启动eureka-server,端口号为8761;启动config-server,端口号为8888;启动config-client,端口号为8881。

      访问http://localhost:8881/foo,看到:

foo version 2

      如果想测试多个config-server,只需要增加ribbon内容,然后启动多个实例即可。


      源码下载:https://github.com/lingd3/SpringCloudLearning/tree/master/chapter11




《史上最简单的Spring Cloud教程源码》 一、Spring Cloud Alibaba教程 Spring Cloud Alibaba教程:使用Nacos作为服务注册发现组件 Spring Cloud Alibaba教程:使用Nacos作为配置中心 Spring Cloud Alibaba教程:Sentinel的使用 二、Greenwich版本 Spring Cloud Consul 之Greenwich版本全攻略 spring cloud config将配置存储在数据库中 Spring Cloud Sleuth 之Greenwich版本全攻略 Spring Boot Admin 2.1.0 全攻略 阿里分布式事务框架GTS开源了! 三、Finchley版本 Spring Cloud Finchley; Spring Boot 2.0.3 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(Finchley版本) 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本) 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本) 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本) 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本) 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本) 史上最简单的SpringCloud教程 | 第七篇: 高可用分布式配置中心(Spring Cloud Config)(Finchley版本) 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本) 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本) 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本) 史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)(Finchley版本) 史上最简单的SpringCloud教程 | 第十四篇: Spring Cloud Gateway初体验 史上最简单的SpringCloud教程 | 第十五篇: Spring Cloud Gateway 之Predict篇 史上最简单的SpringCloud教程 | 第十六篇: Spring Cloud Gateway 之filter篇 史上最简单的SpringCloud教程 | 第十七篇: Spring Cloud Gateway 之限流篇 史上最简单的SpringCloud教程 | 第十八篇: spring cloud gateway之服务注册与发现 四、源码篇: 深入理解Feign之源码解析 深入理解Eureka之源码解析 深入理解Ribbon之源码解析 深入理解Hystrix之文档翻译 深入理解Zuul之源码解析 五、进阶篇 Spring Cloud Sleuth超详细实战 拜托!面试请不要再问我Spring Cloud底层原理 微服务注册中心如何承载大型系统的千万级访问? 每秒上万并发下的Spring Cloud参数优化实战 六、D版本 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka) 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon) 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign) 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix) 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul) 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config) 史上最简单的SpringCloud教程 | 第七篇: 高可用分布式配置中心(Spring Cloud Config) 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth) 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心 史上最简单的SpringCloud教程 | 第十一篇:docker部署spring cloud项目 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard) 史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine) 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul) 七、番外篇: 如何使用MongoDB+Springboot实现分布式ID? 如何在springcloud分布式系统中实现分布式锁? 如何用Redlock实现分布式锁 如何在IDEA启动多个Spring Boot工程实例 JWT如何在Spring Cloud微服务系统中在服务相互调时传
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值