目录

  • `config` 简介
  • `config` 作用
  • `config` 架构
  • `config` 配置中心的实现
    • 创建子模块项目 `config` 配置中心
    • `Maven` 依赖
      • 消费方与提供方
      • `config` 配置中心
    • 配置文件
      • `git` 创建仓库
      • `config` 配置中心的 `application.properties`
      • `consumer` 消费方配置文件
      • `producer` 消费方配置文件
    • 启动类
    • 测试
      • `http` 访问 `config` 配置中心配置文件的 `url` 形式

config 简介

springcloud config 项目是一个解决分布式系统的配置管理方案。它包含了 clientserver 两个部分,server 端提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client 端通过接口获取数据、并依据此数据初始化自己的应用

目前 springcloud config 的使用主要是通过 git/svn 方式做一个配置中心,然后每个服务从其中获取自身配置所需的参数

springcloud config 也支持本地参数配置的获取。如果使用本地存储的方式,在 application.propertiesapplication.yml 文件添加 spring.profiles.active=native 配置即可,它会从项目的 resources 路径下读取配置文件。如果是读取指定的配置文件,那么可以使用 spring.cloud.config.server.native.searchLocations = file:D:/properties/ 来读取

config 作用

springcloud config 是一个基于 http 协议的远程配置实现方式。通过统一的配置管理服务器进行配置管理,客户端通过 https 协议主动的拉取服务的的配置信息,完成配置获取

简单一点的说就是:在分布式环境中,很多的服务都是集群部署,那就意味着这些集群部署的服务都需要相同的配置文件。所以,这时候就引入了 springcloud config 这个组件,使用该组件来进行众多的配置文件的统一管理。例如,我们在修改某一配置文件时,只需要在远程的 gitHub 等工具上面修改即可,不用多次的在众多的配置文件中来回繁琐的修改

config 架构


springcloud config 分为服务端和客户端,服务端负责将本地 git 或者 svn 中存储的配置文件发布成 REST 风格的接口,客户端可以从服务端 REST 接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过 POST 方法触发各自的 /refresh 接口

config 配置中心的实现

创建子模块项目 config 配置中心

依然使用 上一篇 文章的项目,然后创建子模块项目 config 配置中心,如下

Maven 依赖

消费方与提供方

作为 config 配置中心的客户端,消费方与提供方都添加如下依赖

<!--springcloud config客户端-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId>
</dependency>

config 配置中心

作为 config 配置中心的服务端,也是要注册进 eureka 注册中心的

<!--springcloud config服务端-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--springcloud eureka客户端-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

配置文件

git 创建仓库

使用 githubgitee 创建仓库,用于存放统一管理的配置文件

config 配置中心的 application.properties

server.port=8070#注册进eureka的名称
spring.application.name=eureka-client-configeureka.client.service-url.defaultZone=http://eureka7001:8761/eureka/
eureka.instance.prefer-ip-address=true#gitee的仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/chaojiangcj/springcloud-learn-config.git
spring.cloud.config.server.git.username=你的用户名
spring.cloud.config.server.git.password=你的密码
#配置仓库需要找的文件路径
spring.cloud.config.server.git.search-paths=eureka-client-*
  • spring.cloud.config.server.git.search-paths:需要访问仓库的子目录的话就配置
  • spring.cloud.config.server.git.urispring.cloud.config.server.git.searchPaths 同时配置的情况下,springcloud 会先在 searchPaths 中寻找,寻找不到再到 uri 中配置的库的根目录直接寻找

consumer 消费方配置文件

application.properties 的配置全部复制到 gitee 仓库的 eureka-client-consumer 文件夹下的 eureka-client-consumer-dev.properties 文件中,然后将 application.properties 的配置全部注释掉。再然后在 consumer 消费方创建配置文件 bootstrap.properties,内容如下

spring.application.name=eureka-client-consumerspring.cloud.config.uri=http://127.0.0.1:8070
spring.cloud.config.label=master
spring.cloud.config.profile=dev
  • spring.cloud.config.uri:要访问 config 配置中心的 url
  • spring.cloud.config.label:指明要访问远程仓库的分支
  • spring.cloud.config.profile:指明要访问配置文件的环境,dev 开发环境配置文件,test 测试环境,prod 正式环境

producer 消费方配置文件

与上述方法一样,创建配置文件 bootstrap.properties,内容如下

spring.application.name=eureka-client-producer#连接config服务端,才能获取配置
spring.cloud.config.uri=http://localhost:8070
#需要读取文件的所在分支
spring.cloud.config.label=master
spring.cloud.config.profile=dev

启动类

只需要在 config 配置中心服务端添加注解 @EnableConfigServer,@EnableEurekaClient 即可

@Slf4j
@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class AppConfig {public static void main(String[] args) {SpringApplication.run(AppConfig.class, args);log.info("------AppConfig Running------");}
}

测试

http 访问 config 配置中心配置文件的 url 形式

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

分别启动 eureka 注册中心 config,producer,consumer4 个项目,postman 测试如下


访问成功,获取到了提供方 producer 的配置信息。我们再次请求消费方 consumer 的接口,postman 测试结果如下


请求消费方 consumer 的接口成功,证明我们的配置都是正确的

springcloud之config配置中心相关推荐

  1. SpringCloud Consul Config 配置中心 (二)

    上次配置中心启动命令为consul agent -dev,这样数据不会持久化,重新启动consul后key/value配置的信息会丢失. 实现数据持久化,使用如下命令启动,-data-dir 为数据保 ...

  2. SpringCloud Consul Config 配置中心(一)

    用 Consul 存储键值对,实现分布式配置中心,支持不需要重启配置中心服务就能读取更新后的属性. 在前面开发基础上,稍作调整,暂只调整日志服务. 1.在日志服务里添加maven依赖 <depe ...

  3. springcloud:config配置中心(多配置文件引入)

    解决客户端引入多个文件问题. 比如我一个服务需要加载公共的配置(数据库/redis连接),还要加载私有配置,我希望把他们放两个私有文件中分别加载.可是发现client只会读取bootstrap.pro ...

  4. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  5. Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】

    SpringCloud学习目录点击跳转对应的文章 Java之 Spring Cloud 微服务搭建(第一个阶段)[一][SpringBoot项目实现商品服务器端是调用] Java之 Spring Cl ...

  6. SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)

    文章目录 前言 一.传统应用配置痛点 二.Config 配置中心介绍 三.服务端Config Server搭建 1.pom依赖 2.application启动类配置 3.application.yml ...

  7. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

  8. springcloud(九):配置中心和消息总线(配置中心终结版)

    我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端 ...

  9. docker 安装nacos_19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  10. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式

    文章目录 Pre 实现 方式一 通过 shared-dataids 方式 方式二 通过 ext-config方式 配置文件优先级 源码 Pre Spring Cloud Alibaba - 18 Na ...

最新文章

  1. java B2B2C Springcloud多租户电子商城系统-(七)高可用的分布式配置中心(Spring Cloud Config)...
  2. 安全攻防技能——Web安全——XSS
  3. Java将小数转换为成百分比输出
  4. 代码注释(图案:小狗)
  5. 现在学python2还有意义吗_现在学python该学python2还是python3?
  6. 2022百度人工智能专利白皮书 附下载
  7. 数据统计分析(SPSS)【1】
  8. wincc变量数据归档(案例)
  9. 什么叫CDN回源和域名回源,如何采用正确的正确的回源策略
  10. 【项目实战】仓库信息管理系统(layui+SSM+SpringBoot)
  11. 怎么让python一直执行_怎么才能让Python多进程不间断执行任务
  12. 2010年十大免费下载软件
  13. Qt opengl fps相机
  14. 没赶上互联网,也没赶上移动互联网,微软到底赶上了什么??
  15. UNet语义分割模型的使用-Pytorch
  16. 关于Google Pay JAVA后端处理
  17. Kafka 3.1的KRaft模式里的broker与controller
  18. 图片嵌在文字里首行缩进
  19. WPS Office 2019 上架微软商城,全新可定制 UI
  20. uniapp微信公众号h5接入网易七鱼客服系统

热门文章

  1. 算法: 最大正方形面积221. Maximal Square
  2. 自动驾驶 2-1 传感器和计算硬件 Sensors and Computing Hardware
  3. 阿里云云计算 37 PolarDB MySQL的连接
  4. swift5 修改Accessibility order读取的顺序
  5. 翻译:Vim从入门到精通 Mac OS
  6. iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
  7. Docker安装MySQL 8 for Mac(图文详解)
  8. 计算机网络与应用在线作业,北航《计算机网络与应用》在线作业一15秋满分答案...
  9. python graphviz_Python中Graphviz的输出问题
  10. cacheable中的condition和unless