SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

作者:smartdt 时间:2021-06-23 16:48:08 

一、简介

当要将配置中心部署到生产环境中时,与服务注册中心一样,我们也希望它是一个高可用的应用。Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式。

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

SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

服务模式:除了上面这种传统的实现模式之外,我们也可以将Config Server作为一个普通的微服务应用,纳入Eureka的服务治理体系中。这样我们的微服务应用就可以通过配置中心的服务名来获取配置信息,这种方式比起传统的实现模式来说更加有利于维护,因为对于服务端的负载均衡配置和客户端的配置中心指定都通过服务治理机制一并解决了,既实现了高可用,也实现了自维护。由于这部分的实现需要客户端的配合,具体示例读者可详细阅读 “客户端详解 ”一节中的 “服务化配置中心” 小节。

二、前期准备

一个服务注册中心,EUREKASERVER,端口为5555;

三、改造Config-Server

(1)pom.xml,添加spring-cloud-starter-eureka依赖


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

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

(2)application.yml,配置参数eureka.client.serviceUrl.defaultZone以指定服务注册中心的位置


server:
port: 5588

spring:
application:
 name: config-server

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

cloud:
 config:
  server:
   git:
    uri: https://gitee.com/smartdt/springcloudconfig.git #配置Git仓库位置。
    searchPaths: config-repo #配置仓库路径下的相对搜索位置,可以配置多个。
    username: username #访问 Git 仓库的用户名。
    password: password #访问 Git 仓库的用户密码。
    label: master #配置仓库的分支
    ###如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写。

(3)入口类,新增@EnableDiscoveryC巨ent注解,用来将config-server注册到上面配置的服务注册中心上去。


@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class SpringcloudconfigserverApplication {

public static void main(String[] args) {
   SpringApplication.run(SpringcloudconfigserverApplication.class, args);
 }
}

(4)启动config-server,通过Eureka-Server查看

SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

四、改造Config-Client

(1)pom.xml,添加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-web</artifactId>
 </dependency>
 <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
 </dependency>

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

(2)bootstrap.properties,添加配置服务中心信息


spring.application.name=configspace
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri= http://localhost:5588/
server.port=5589
eureka.client.serviceUrl.defaultZone=http://localhost:5555/eureka/

(3)入口类,添加@EnableDiscoveryClient


@EnableDiscoveryClient
@SpringBootApplication
public class SpringcloudconfigclientApplication {

public static void main(String[] args) {
   SpringApplication.run(SpringcloudconfigclientApplication.class, args);
 }
}

(4)测试类不变


@RefreshScope
@RestController
public class ConfigController {

@Value("${from}")
 private String from;
 @Value("${username}")
 private String username;
 @Value("${password}")
 private String password;

@RequestMapping("/from")
 public String from() {
   return this.from + "~user:" + this.username + "~pass:" + this.password;
 }
}

(5)启动测试,通过Eureka-Server查看


SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

(6)浏览器测试,访问http://localhost:5589/from

SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

来源:https://blog.csdn.net/smartdt/article/details/79070943

标签:Spring,Cloud,Config
0
投稿

猜你喜欢

  • C#实现集合转换成json格式数据的方法

    2022-03-18 03:28:50
  • Java数据结构之顺序表的实现

    2023-06-22 00:47:26
  • IDEA连接Mysql数据库的详细图文教程

    2023-10-09 09:51:24
  • MyBatis图文并茂讲解注解开发一对一查询

    2023-12-07 11:01:18
  • AOP之事务管理<aop:advisor>的两种配置方式

    2023-11-24 22:55:06
  • MyBatis动态SQL表达式详解

    2023-11-29 00:42:36
  • 解决java启动时报线程占用报错:Exception in thread “Thread-14“ java.net.BindException: Address already in use: bind

    2021-07-05 04:26:23
  • Java之策略模式比较器案例讲解

    2021-12-25 22:24:32
  • Mybatis-Plus设置全局或者局部ID自增的实现

    2021-11-27 00:30:03
  • Java KeyGenerator.generateKey的19个方法代码示例

    2022-08-08 14:26:40
  • 基于C语言实现静态通讯录的示例代码

    2023-07-02 22:07:38
  • Java面试题及答案集锦(基础题122道,代码题19道)

    2023-11-25 12:36:17
  • Java 反射机制实例详解

    2023-11-28 03:49:47
  • 运用示例简单讲解C#取消令牌CancellationTokenSource

    2022-02-04 02:36:14
  • 一篇文章带你深入了解Java封装

    2023-11-20 00:37:45
  • Java创建多线程的两种方式对比

    2023-09-14 21:02:49
  • Java实现医院管理系统

    2023-11-22 18:36:07
  • 六款值得推荐的android(安卓)开源框架简介

    2023-06-24 01:46:54
  • Java树形结构数据生成导出excel文件方法记录

    2021-08-20 05:19:18
  • 基于Java实现Json文件转换为Excel文件

    2022-08-04 23:53:15
  • asp之家 软件编程 m.aspxhome.com