Config-Server简介


   Spring Cloud配置中心,就是将每个服务的配置都集合在一个地方。这个地方要么是github,要么是国内gitee码云。通过config-server,可以在一个地方集中对所有环境(服务)进行外部化配置管理。例如,当一个服务从开发环境到测试环境,然后再从测试环境切换到生产环境,你可以统一使用config-server来统一管理这些环境之间的配置,并确保该环境在迁移时能够拥有它运行需要的一切配置。简而言之:config-server就是用来实现配置统一管理和不同环境间配置的切换

config-server分发图


Config-server最小案例


  开发流程:1、创建config服务

  2、配置依赖,更换开发环境2.2.5.RELEASE,版本管理,consul注册中心,健康检查,config-server配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.demo</groupId><artifactId>config</artifactId><version>0.0.1-SNAPSHOT</version><name>config</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR6</spring-cloud.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><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><!--consul注册中心的依赖 因为eureka2.0已经停止更新 所以就没有去用他--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!--这个包是用来健康监控的--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--config server 配置中心  配置--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

  3、配置远程仓库、我这里采用的是国内gitee,注册账号,创建仓库

  4、新仓库配置,确认提交

  5、新建配置文件

  6、增加内容,确认提交就好

  7、复制这个地址,到我们项目的properties中配置

  8、properties配置

#指定端口后
server.port=7878
#config在注册中心的地址
spring.application.name=configserver
#注册中心地址
spring.cloud.consul.host=localhost
#注册中心端口
spring.cloud.consul.port=8500#gitee远程仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/G_wen/cloud-server-config.git#私有仓库的话就需要账号和密码
#spring.cloud.config.server.git.username=
#spring.cloud.config.server.git.password=

  9、启动类添加注解

@SpringBootApplication
@EnableDiscoveryClient   //客户端发现的注解 害怕注册中心看不到这个服务
@EnableConfigServer   //configserver 注解  表示这个是一个config服务
public class ConfigApplication {public static void main(String[] args) {SpringApplication.run(ConfigApplication.class, args);}}

  10、启动看效果,这里访问的路径是:http://localhost:7878/product-dev.properties,原本文件时product.properties,但是springcloud官方文档要求我们这样访问

  可以有三种访问格式,propeties结尾的

  yml结尾的

  json结尾的

  11、名字没有指定环境,他就是默认的dev环境,如果我们创建了dev的环境配置,那么显示的内容会优先加载一般配置,dev的会追加在后面

  再次访问,将dev的直接追加在后面

分支管理


  1、配置的分支管理。如果我们再加一个分支,例如dev的话,我们项目单独去访问这个分支,不去走master分支

  2、修改一下product-dev.properties中的内容,一会访问的时候以便区分,再properties中去增加配置

spring.cloud.config.server.git.default-label=dev

  3、访问效果

本地仓库管理


  1、config-server每次都是从gitee上拉取内容到本地仓库,本地仓库读取相应的配置文件,我们如果没有指定本地仓库路径,系统会自动为我们指定,下面是控制台为我们输出的默认仓库

2021-01-31 16:30:30.832  INFO 16020 --- [nio-7878-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/C:/Users/Geek/AppData/Local/Temp/config-repo-6875966835209491844/product.properties

  2、自己指定仓库路径,在properties配置文件中,加上配置,并创建相应的文件

#指定从gitee上下载下来的资源存放的目录
spring.cloud.config.server.git.basedir=F:\\practiceProject\\demo\\config7878\\src\\main\\resources\\localconfig

  3、运行以后

ConfigClient客户端


  配置中心客户端,客户端的配置properties不再从本地加载,而是同时configserver,得到远程仓库配置的properties配置,再启动项目。现在搭建一个实例,将configclient注册到consul注册中心,configclient注册到注册中心,properties配置就需要配置注册中心地址,但是这个时候我把这个地址放在gitee上,如果client服务能成功注册到consul,说明client成功加载了配置。

  开发步骤:1、创建client微服务

  2、引入依赖,和一般的客户端一样,consul注册、健康检查、openfeign、hytrix降级熔断、新增config依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.demo</groupId><artifactId>configclient</artifactId><version>0.0.1-SNAPSHOT</version><name>configclient</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR6</spring-cloud.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><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><!--consul注册中心的依赖 因为eureka2.0已经停止更新 所以就没有去用他--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!--这个包是用来健康监控的--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--引入openfeign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--服务熔断 降级--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><!--加入configclient的依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  3、properties配置,保留了服务注册名,其他个性化的私有配置

#将公共配置放在gitee上#设置端口号
#server.port=9098
#设置应用名称
spring.application.name=configclient
#设置注册中心的网址
#spring.cloud.consul.host=localhost
#设置访问注册中心的port
#spring.cloud.consul.port=8500#私有配置
#让微服务开启向配置中心拉取配置的功能
spring.cloud.config.discovery.enabled=true
#找到配置中心  service-id
spring.cloud.config.discovery.service-id=configserver
#从仓库的哪一个分支拉去配置   注意这个是分支
spring.cloud.config.label=dev
#拉取仓库中的文件  指定名称
spring.cloud.config.name=client
#指定配置文件环境   注意这个是环境
spring.cloud.config.profile=dev

  4、在gitee上创建配置,创建三个环境的配置

  5、启动类配置一下注解

@SpringBootApplication
@EnableDiscoveryClient   //其实配不配无所谓 但还是配置一下
public class ConfigclientApplication {public static void main(String[] args) {SpringApplication.run(ConfigclientApplication.class, args);}}

  6、有一点需要注意,properties的名字需要改成bootstrap.properties,不然会出现连接超时的情况,详情参考博客:https://blog.csdn.net/qq_44349459/article/details/113481856

  7、启动确保没有问题,启动时注册到consul,端口从gitee上获取成功

  8、查看consul注册中心,注册成功

Configclient手动刷新配置


  服务客户端每次启动都会从远程仓库重新加载配置,如果我们自己开发需要在gitee上更改配置,那么重新启动服务便可以了。但是已经上线的项目,不可能随时开关,我们的项目肯定是随时开着的。那么我们在更改giee配置的时候,就需要主动的更新配置到我们正在运行的客户端服务。手动刷新就是主动发送更新请求到client客户端。

开发流程:1、在properties中增加配置

#开启所有web端点暴露   这个就是为了手动刷新的时候能够得到请求
management.endpoints.web.exposure.inclue=*

  2、这时候还需要配置一个请求接收的接口类,访问这里就可以看到更改的相应信息

package com.demo.configclient.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope   //刷新当前区域
public class RefreshController {private Logger logger = LoggerFactory.getLogger(RestController.class);@Value("${server.port}")private int port;  //拿到配置的端口@Value("${name}")private String name;  //拿到配置的名字//用来做测试的  表示这里刷新能够访问最新的配置@GetMapping("/configtest")public String test() {logger.info("name---->{},port---->{}", name, port);return name + ":" + port;}
}

  3、记得启动一下项目,让这些配置生效。访问接口,查看一下原本的值是啥。

  4、将gitee的配置改一下,然后用postman发送一下请求,超这个地址访问:http://localhost:9098/actuator/refresh。postman下载地址:

5、访问了以后,再取看一下

总结


  本章介绍了config-server是个怎样的组件。配置的中转站,configserver连接远程仓库gitee,访问gitee分支,指定本地配置仓库。configclient客户端配置如何从configserver拉取,如何在不重启configclient的情况下,更改了gitee配置,手动的将configclient配置给更改。

Config-Server相关推荐

  1. 玩转Spring Cloud之配置中心(config server config client)

    玩转Spring Cloud之配置中心(config server &config client)  本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...

  2. 为Spring Cloud Config Server配置远程git仓库

    简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...

  3. 配置SpringCloud Config Client连上Config Server

    SpringCloud Config Client实际上就是连接到Config Server的普通应用,前面一篇文章 SpringCloud Config Server搭建 已经介绍了如何搭建一个Co ...

  4. SpringCloud Config Server搭建

    文章目录 1 创建Git仓库 2 创建应用配置文件 3 将应用配置文件commit到Git仓库中 4 创建Config Server应用 5 配置运行Config Server 6 访问Config ...

  5. 微服务SpringCloud—Config Server对称加密

    配置内容的加解密 在Git仓库中明文存储配置属性的.很多场景下,对于某些敏感的配置内容(例如数据库账号.密码等),应当加密存储. Config对称加解密 1.安装JCE 默认情况下我们的JRE自带了J ...

  6. 测试一个config server 服务器挂机后,集群是否能读写数据

    测试架构: 测试目的: 测试一个config server 服务器挂机后,集群是否能读写数据. 测试原因: 上周因为内存吃紧,准备添加内存.在查看服务器时,把一台服务器关机检查.     关机后,WE ...

  7. spring cloud: 使用consul来替换config server,config key/value 具体的配置详解

    1.先添加依赖 之前config server的依赖去掉,换成consul-config的依赖即可. <dependency><groupId>org.springframew ...

  8. spring cloud: 使用consul来替换config server

    上一篇提到了,eureka 2.x官方停止更新后,可以用consul来替代,如果采用consul的话,其实config server也没必要继续使用了,consul自带kv存储,完全可以取代confi ...

  9. java测试spring cloud_java – 从Spring引导单元测试中排除Spring Cloud Config Server

    鉴于我有以下3豆: @Component public class ServiceConfig { // This value is only available from the Spring Cl ...

  10. Spring Cloud Config Server简介

    1.概述 在本教程中,我们将回顾Spring Cloud Config Server的基础知识. 我们将设置一个Config Server ,然后构建一个客户端应用程序 ,该客户端应用程序在启动时会消 ...

最新文章

  1. html5 静态网页 线程,HTML5 Web Workers之网站也能多线程的实现
  2. 2016.01.19 UITextField
  3. 目前可用的微博秀的嵌入方法大全(亲测2019年2月仍有效)
  4. hexo的yelee主题更换类别以及tags的字体颜色
  5. Android7.0反射类找不到的问题
  6. python新手输出错误,Python 新手常犯错误(第一部分)
  7. 鸿蒙渊之后是什么任务,都说这次主线好,那我来唱唱反调吧
  8. 【Oracle】闪回表
  9. 【BZOJ3675】【Apio2014】序列分割
  10. uwsgi基础——参数
  11. oreilly免费电子书
  12. Python学习七文件和数据格式化
  13. Linux磁盘空间管理利器--ncdu(为你的 系统瘦身)
  14. 全同高校名称MySQL数据表
  15. Xtts v4 xttdriver.pl xtt.properties
  16. 使用注册表reg文件修复git bash git gui 右键快捷方式
  17. 生物识别技术在汽车领域带来了巨大变革
  18. java float 判断整数_判断一个数是否是整数
  19. 鞍点(saddle point)
  20. Html怎么判断ie5,css怎样判断IE浏览器?

热门文章

  1. Android Studio 播放bibi声音
  2. 中国农超对接模式产业竞争动态格局与建设经营分析报告2022-2028年
  3. Python3监控IP丢包率
  4. 280049的时钟树
  5. [骑驴找马]ETAGEERF和Agent*Go
  6. 智慧医院系统定制|慢病管理系统更全面
  7. 系统接口日志记录-AOP
  8. android播放器 慢速,能慢放视频的手机软件 安卓手机视频慢放,把视频速度调整为1/2X...
  9. Docker:MacOS环境下修改容器的端口号
  10. PB加密,PBD加密,杜绝PB程序反编译,PB加密工具