SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码
作者:smartdt 发布时间:2021-06-23 16:48:08
一、简介
当要将配置中心部署到生产环境中时,与服务注册中心一样,我们也希望它是一个高可用的应用。Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式。
传统模式:不需要为这些服务端做任何额外的配置,只需要遵守一个配置规则,将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护。而客户端在指定Config Server位置时,只需要配置Config Server上层的负载均衡设备地址即可, 就如下图所示的结构。
服务模式:除了上面这种传统的实现模式之外,我们也可以将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查看
四、改造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查看
(6)浏览器测试,访问http://localhost:5589/from
来源:https://blog.csdn.net/smartdt/article/details/79070943


猜你喜欢
- 简介本文介绍Java的List的正确的删除方法。实例需求:有如下初始数据,将list中的所有数据为"b"的元素删除掉。即
- IOS的滑动按钮菜单在UI设计里面绝对堪称一绝,在学习了Android的自定义view后,我萌生了模仿它的想法。实现上面的模拟需要自定义一个
- 智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delet
- 使用filter对request body参数进行校验@Slf4jpublic class ParameterCheckServletReq
- 今天,基基,跟大家分享一下,IntelliJ IDEA 2021 Win 和 Mac 快捷键大全,IDEA 基本所有功能都可以通过快捷键来完
- 上篇文章给大家介绍了在idea中将创建的java web项目部署到Tomcat中的过程图文详解,可以参考下,本文给大家继续介绍如何在IDEA
- 使用WPF做的一个简单的操作文件的demo,包括复制和移动文件夹,核心思想就是使用递归,如果只是移动或者复制单一文件,直接使用File.Co
- 先记下来,以备后用! /// <summary> /// 金额转为大写金额 //
- response.setHeader设置下载文件名无效response.setContentType("application/o
- 一.应用场景平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个
- 本文实例为大家分享了Android实现指针刻度转盘的具体代码,供大家参考,具体内容如下一. 先上个效果图,实现如图所示刻度转盘和2个文本的绘
- 本文实例讲述了Java利用反射自动封装成实体对象的方法。分享给大家供大家参考。具体分析如下:利用此方法的时候需要传递的参数的名称,必须以行号
- 基类:using System;using System.Collections.Generic;using System.Linq;usi
- 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:1
- 当我们拿到一大段JSON字符串的时候,分析起来简直头皮发麻,相信很大一部分朋友也都会直接去BEJSON等网站去做一个JSON格式化,已方便自
- 一、理解slf4j(Simple Logging Facade for Java),表示为java提供的简单日志门面,更底层一点说就是接口。
- 一、Springboot项目运行正常打包前,Springbooot项目在本地必须是运行正常的。我们这里使用本专栏写起来的项目,如下所示:来访
- 一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest {public
- 前言:java5为我们提供了Callable和Future,使我们可以很容易的完成异步任务结果的获取,但是通过Future的get获取异步任
- 本文介绍如何通过C#程序代码方法将XML文件转换为Word文档,包括转为.doc /.docx等格式。并附VB.NET代码,有需要可供参考。