spring cloud config分布式配置中心的高可用问题

 更新时间:2018年01月19日 12:09:44   作者:牛奋lch  
本文给大家介绍spring cloud config分布式配置中心的高可用问题,通过整合Eureka来实现配置中心的高可用,需要的朋友参考下本文

在前面的文章中,我们实现了配置文件统一管理的功能,但是我们可以发现,我们仅仅只用了一个server,如果当这个server挂掉的话,整个配置中心就会不可用,下面,我们就来解决配置中心的高可用问题。

下面我们通过整合Eureka来实现配置中心的高可用,因为作为架构内的配置管理,本身其实也是可以看作架构中的一个微服务,我们可以把config server也注册为服务,这样所有客户端就能以服务的方式进行访问。通过这种方法,只需要启动多个指向同一Gitlab仓库位置的config server端就能实现高可用了。

一、Config Server端加入Eureka

1、加入Eureka依赖

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

2、添加Eureka支持,将配置服务注册到Eureka上去

@EnableEurekaClient 

3、修改Server端的配置文件

加入Eureka注册的配置,bootstrap.yml

server: 
 port: 8889 
eureka: 
 client: 
 service-url: 
  defaultZone: http://localhost:8761/eureka 
 instance: 
 prefer-ip-address: true 
spring: 
 application: 
  name: foo 
 cloud: 
 config: 
  server: 
  git: 
   uri: <span>https://gitlab.xxx.com/xxxxx/xxxxx.git</span>  # 配置gitlab仓库的地址 
   search-paths: <span>/config-repo</span> # gitlab仓库地址下的相对地址,可以配置多个,用,分割。 
   username: your name  # gitlab仓库的账号 
   password: your password # gitlab仓库的密码 

启动Config Server

4、修改端口号,再启动一个Config Server

5、查看服务是否注册成功

二、Config 客户端加入Eureka

1、加入Eureka的pom依赖,同Config Server

2、修改Config客户端的配置文件

bootstrap.properties经过测试,此处客户端只能是bootstrap.properties,否则会一直连端口8888

server.port=8890 
spring.application.name=configserver 
spring.cloud.config.name=configserver 
spring.cloud.config.profile=dev 
spring.cloud.config.label=master 
# 开启Config服务发现支持 
spring.cloud.config.discovery.enabled=true 
# 此处需要设置成Config Server在Eureka上注册的服务名 
spring.cloud.config.discovery.service-id=foo 
# 指定服务发现中心 
eureka.client.service-url.defaultZone=http://localhost:8761/eureka 

其中,通过eureka.client.service-url.defaultZone参数指定服务注册中心,用于服务的注册与发现,再将spring.cloud.config.discovery.enabled参数设置为true,开启通过服务来访问Config Server的功能,最后利用spring.cloud.config.discovery.serviceId参数来指定Config Server注册的服务名。这里的spring.application.name和spring.cloud.config.profile和前面博客中的意义一致。

3、在Application主类上添加Eureka支持,同Config Server一致

三、验证

1、查看Eureka Server上的服务

2、查看Config Server是否正常

在浏览器中分别输入:http://localhost:8888/configserver/dev/masterhttp://localhost:8889/configserver/dev/master,看是否有返回结果如下:

{ 
 
 "name": "configserver", 
 "profiles": [ 
  "dev" 
 ], 
 "label": "master", 
 "version": "8949024814dcb6d61f97dc49db7e9dadcfc724b1", 
 "state": null, 
 "propertySources": [ 
  { 
   "name": "https://gitlab.xxx.com/xxxxx/xxxxx/project/config-repo/configserver.properties", 
   "source": { 
    "name": "chhliuxyh", 
    "hello": "i'm the king of the world!!!", 
    "profile": "profile-default" 
   } 
  } 
 ] 
 
} 

3、查看客户端是否正常

在浏览器中输入http://localhost:8890/hello,看是否有如下返回

i'm the king of the world!!!

如果上面几步正常,则说明是ok的。

4、将8888端口对应的Config Server停掉,然后重新输入http://localhost:8890/hello,看是否ok!我们发现仍然是ok的,这样我们就完成了配置中心的高可用了!

<pre code_snippet_id="2245130" snippet_file_name="blog_20170306_4_711400"></pre> 
<pre></pre> 
<pre></pre> 

总结

以上所述是小编给大家介绍的spring cloud config分布式配置中心的高可用实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • RocketMQ消息拉取过程详解

    RocketMQ消息拉取过程详解

    这篇文章主要为大家介绍了RocketMQ消息拉取过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • java最新版本连接mysql失败的解决过程

    java最新版本连接mysql失败的解决过程

    这篇文章主要给大家介绍了关于java最新版本连接mysql失败的解决过程,文中通过图文以及示例代码将解决的过程介绍的非常详细,对遇到这个问题的同学具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • Mybatis批处理、Mysql深分页操作

    Mybatis批处理、Mysql深分页操作

    这篇文章主要介绍了Mybatis批处理、Mysql深分页操作,Mybatis批量操作包括Foreach方式和ExecutorType.BATCH插入操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 详解如何在Java项目中实现信号的连续接收

    详解如何在Java项目中实现信号的连续接收

    在Java项目中,信号的连续接收是一项重要的任务,特别是在处理异步事件或者需要对外部事件做出响应时,本篇博客将介绍如何在Java项目中实现信号的连续接收,包括信号的监听、处理和停止等步骤,需要的朋友可以参考下
    2023-11-11
  • 浅谈Maven镜像更换为阿里云中央仓库(精)

    浅谈Maven镜像更换为阿里云中央仓库(精)

    本篇文章主要介绍了Maven镜像更换为阿里云中央仓库(精),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 理解Java设计模式编程中的迪米特原则

    理解Java设计模式编程中的迪米特原则

    这篇文章主要介绍了Java设计模式编程中的迪米特原则,迪米特原则旨在降低类与类之间的耦合,需要的朋友可以参考下
    2016-02-02
  • 解决HttpServletRequest 流数据不可重复读的操作

    解决HttpServletRequest 流数据不可重复读的操作

    这篇文章主要介绍了解决HttpServletRequest 流数据不可重复读的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • JVM:你知道为什么对象一定在堆中分配吗

    JVM:你知道为什么对象一定在堆中分配吗

    这篇文章主要介绍了jvm对象的创建和分配的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-08-08
  • Spring Boot 表单验证篇

    Spring Boot 表单验证篇

    在表单提交的时候,我们需要进行验证。下面通过本篇文章给大家介绍Spring Boot 表单验证篇,需要的朋友可以参考下
    2017-08-08
  • Jenkins安装多个jdk版本并在项目中选择对应jdk版本

    Jenkins安装多个jdk版本并在项目中选择对应jdk版本

    在使用jenkins构建项目时会遇到不同的job需要配置不同版本的jdk,下面这篇文章主要给大家介绍了关于Jenkins安装多个jdk版本并在项目中选择对应jdk版本的相关资料,需要的朋友可以参考下
    2024-03-03

最新评论