Spring Cloud(Hoxton版本)(八)Config分布式配置中心

maven profile <filtering>true</filtering>的作用 1 在pom.xml中 <!--<filtering>true</filtering>--> 被注释掉 打包时能替换文件名,但是不能替换文件里面的标识符,启动项目时报错。 2在pom.xml中 <filtering>true</filtering> 打包时能替换文件名,也能替换文件里面的标识符:启动时正常 -----... 阅读详情

一、摘要

Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分,本文将对其用法进行详细介绍。

二、Spring Cloud Config 简介

Spring Cloud Config 分为服务端和客户端两个部分。服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。客户端可以通过配置中心来获取配置信息,在启动时加载配置。Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息。

三、 在Git仓库中准备配置信息

由于Spring Cloud Config 需要一个存储配置信息的Git仓库,这里我们先在Git仓库中添加好配置文件再演示其功能,Git仓库地址为:https://github.com/jason-zwt/springcloud-config.git

  • 配置仓库目录结构

在这里插入图片描述

  • main分支下的配置信息

config-dev.yml

config:
  info: "config info for dev(main)"

config-test.yml

config:
  info: "config info for test(main)"

config-prod.yml

config:
  info: "config info for prod(main)"
  • dev分支下的配置信息

config-dev.yml

config:
  info: "config info for dev(dev)"

config-test.yml

config:
  info: "config info for test(dev)"

config-prod.yml

config:
  info: "config info for prod(dev)"

四、实例演示

  • 创建config-server模块

这里我们创建一个config-server模块来演示Spring Cloud Config 作为配置中心的功能。

  • pom.xml相关依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>	
  • application.yml配置
server:
  port: 8901

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          # 配置存储配置信息的Git仓库
          uri: https://github.com/jason-zwt/springcloud-config.git
          username: jason-zwt
          password: *************
          # 开启启动时直接从git获取配置
          clone-on-start: true
          # 获取子目录下的配置
#          search-paths: '{application}'

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
  • 启动类上添加@EnableConfigServer注解来启用配置中心功能
@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
  • 通过config-server获取配置信息

通过config-server获取配置信息

  • 获取配置文件信息的访问格式
# 获取配置信息
/{label}/{application}-{profile}
# 获取配置文件信息
/{label}/{application}-{profile}.yml
/{label}/{application}-{profile}.properties
  • 占位符相关解释
  1. application:代表应用名称,默认为配置文件中的spring.application.name,如果配置了spring.cloud.config.name,则为该名称。
  2. label:代表分支名称,对应配置文件中的spring.cloud.config.label。
  3. profile:代表环境名称,对应配置文件中的spring.cloud.config.profile。
  • 获取配置信息演示

启动eureka-server、config-server服务

访问http://localhost:8901/main/config-dev.yml来获取main分支上dev环境的配置文件信息
在这里插入图片描述
访问http://localhost:8901/main/config-test.yml来获取main分支上test环境的配置文件信息
在这里插入图片描述

访问http://localhost:8901/dev/config-dev.yml来获取dev分支上dev环境的配置文件信息:

在这里插入图片描述

  • 创建config-client模块

我们创建一个config-client模块来从config-server获取配置。

  • pom.xml中相关依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • bootstrap.yml配置
server:
  port: 9001

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: main
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # 配置中心地址
      uri: http://localhost:8901

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/


  • 添加ConfigClientController类用于获取配置
@RestController
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return configInfo;
    }
}
  • 演示从配置中心获取配置

启动eureka-server、config-server、config-client服务

访问http://localhost:9001/configInfo,可以获取到dev分支下dev环境的配置
在这里插入图片描述

  • 获取子目录下的配置

我们不仅可以把每个项目的配置放在不同的Git仓库存储,也可以在一个Git仓库中存储多个项目的配置,此时就会用到在子目录中搜索配置信息的配置。

首先我们需要在config-server中添加相关配置,用于搜索子目录中的配置,这里我们用到了application占位符,表示对于不同的应用,我们从对应应用名称的子目录中搜索配置,比如config子目录中的配置对应config应用

spring:
  cloud:
    config:
      server:
        git: 
          search-paths: '{application}'

访问http://localhost:9001/configInfo进行测试,可以发现获取的是config子目录下的配置信息。

在这里插入图片描述

  • 刷新配置

当Git仓库中的配置信息更改后,我们可以通过SpringBoot Actuator的refresh端点来刷新客户端配置信息,以下更改都需要在config-client中进行。

在pom.xml中添加Actuator的依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在bootstrap.yml中开启refresh端点

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

在ConfigClientController类添加@RefreshScope注解用于刷新配置

@RefreshScope
@RestController
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return configInfo;
    }

}

重新启动config-client后,调用refresh端点进行配置刷新

使用post请求http://localhost:9001/actuator/refresh
在这里插入图片描述
访问http://localhost:9001/configInfo进行测试,可以发现配置信息已经刷新。
在这里插入图片描述

五、配置中心添加安全认证

我们可以通过整合SpringSecurity来为配置中心添加安全认证。

  • 实例演示

创建config-security-server模块

  • pom.xml相关依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  • application.yml配置
server:
  port: 8905

spring:
  application:
    name: config-security-server
  cloud:
    config:
      server:
        git:
          # 配置存储配置信息的Git仓库
          uri: https://github.com/jason-zwt/springcloud-config.git
          username: jason-zwt
          password: ***********
          # 开启启动时直接从git获取配置
          clone-on-start: true
  security:
    user:
      # 配置用户名和密码
      name: root
      password: 123456

启动config-security-server服务。

  • 修改config-client的配置

添加bootstrap-security.yml配置文件,主要是配置了配置中心的用户名和密码

server:
  port: 9002

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: main
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # 配置中心地址
      uri: http://localhost:8905
      username: root
      password: 123456

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

使用bootstrap-security.yml启动config-client服务。

访问http://localhost:9002/configInfo进行测试,发现可以获取到配置信息。
在这里插入图片描述

六、config-sever集群搭建

在微服务架构中,所有服务都从配置中心获取配置,配置中心一旦宕机,会发生很严重的问题,下面我们搭建一个双节点的配置中心集群来解决该问题。

启动两个config-server分别运行在8902和8903端口上。

添加config-client的配置文件bootstrap-cluster.yml,主要是添加了从注册中心获取配置中心地址的配置并去除了配置中心uri的配置:

server:
  port: 9003

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: main
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # config-sever集群搭建
      discovery:
        enabled: true
        service-id: config-server

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

以bootstrap-cluster.yml启动config-client服务,注册中心显示信息如下:
在这里插入图片描述
访问http://localhost:9003/configInfo,发现config-client可以获取到配置信息。
在这里插入图片描述

  • 使用到的模块
springcloud-learning
├── eureka-server -- eureka注册中心
├── config-server -- 配置中心服务
├── config-security-server -- 带安全认证的配置中心服务
└── config-client -- 获取配置的客户端服务
关于RT-Thread中PWM无法正常输出的学习 按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han 阅读详情

相关推荐

信捷XD/XL系列PLC与C#通信实战:Modbus-RTU协议详解(附完整代码)

本文详细介绍了信捷XD/XL系列PLC与C#通过Modbus-RTU协议实现高效通信的实战指南。从硬件连接到软件配置,再到核心通信功能的实现与优化,提供了完整的代码示例和工业级应用建议,帮助开发者快速构建稳定的自动化通信系统。

weixin_28292761的博客 511

解决扫描不到配置文件的问题

在父项目的配置文件中加入如下代码即可: <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**

weixin_42322903的博客 1250

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

maven Filtering true 作用

每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置也不尽相同(如jdbc.url),借助Jenkins和自动部署提供的便利,我们可以把不同环境的配置文件单独抽离出来,打完包后用对应环境的配置文件替换打包后的文件,其实maven已经给我们提供了替换方案:profile + filtering Filtering Filtering 是 maven 的 resource 插件 提供的功能,作用是用环境变量、pom文件里定义的属性和指定配置文件里的属性替换属性(*.properties)文件里

hello world 3517

OpenBmc开发2:构建开发环境

编译环境VMware + ubuntu 18.04 编译环境构建:参考OpenBmc开发1:构建开发环境 1、打开一个Ternimal,进入openbmc目录下 2、查看有哪些不同的编译配置 find meta-* -name local.conf.sample 可以看到如下编译配置 3、生成编译配置 插入TEMPLATECONF,上边查询到的配置有很多,但是有一些...

master 2万+

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1351

关于maven的filter标签

filter标签。

hdhdhdhdhdhdhdh的博客 1095

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

springboot2.0+spring-security配置跨域

https://www.cnblogs.com/yuarvin/p/10923280.html 和之前springboot1.x时不一样了,需要配置一个CorsFilter bean。 哎,无聊的配置。就不能一行配置默认开启全局跨域吗

OHRadiance的专栏 746

Python+Seaborn可视化:双因素方差分析结果这样呈现更专业

本文详细介绍了如何利用Python中的Seaborn和statsmodels库,专业地执行并可视化双因素方差分析结果。通过模拟实验数据,演示了从模型构建、统计检验(包括交互作用分析)到诊断验证的全流程。重点展示了如何使用Seaborn绘制交互效应图、组合分布图及热图,将复杂的统计结果转化为直观、富有洞察力的可视化图表,助力科研论文与商业报告的专业呈现。

weixin_29274969的博客 137

基于强化学习框架的交易策略学习过程

每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。

xu624735206的博客 1110

Spring Cloud入门-汇总篇(Hoxton版本)

文章目录简介应用场景注册中心配置中心服务网关服务调用熔断与限流安全保护监控中心分布式事务解决目录项目结构项目地址 项目使用的Spring Cloud为Hoxton版本,Spring Boot为2.2.2.RELEASE版本 简介 Spring Cloud是一系列框架的有序集合。目的是协调各个微服务,简化分布式系统开发。这里做一个有关于Spring Cloud知识的汇总,包括Spring Clo...

ThinkWon的博客 3万+

利用CANoe和CAPL实现高效CAN网关设计与仿真

本文详细介绍了如何利用CANoe和CAPL进行高效CAN网关的设计与仿真。通过搭建仿真工程、导入DBC数据库、编写CAPL脚本等步骤,手把手指导读者构建一个连接不同CAN网络的网关模型,实现报文的监听、转发与信号处理,从而在硬件开发前验证逻辑,提升汽车电子开发效率与可靠性。

weixin_29164091的博客 294

Spring Cloud入门-Config分布式配置中心(Hoxton版本)

文章目录摘要Spring Cloud Config 简介在Git仓库中准备配置信息配置仓库目录结构master分支下的配置信息dev分支下的配置信息创建config-server模块在pom.xml中添加相关依赖在application.yml中进行配置在启动类上添加@EnableConfigServer注解来启用配置中心功能通过config-server获取配置信息获取配置文件信息的访问格式占位...

ThinkWon的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【SpringCloud】【Hoxton】Config配置中心

1 介绍 Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。 (1) 集中管理配置文件 (2) 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/ beta/release (3) 运行期间动态调整配置,不再需要在每个服务部罟的机器上编写配置文件,服务会向配置中心统...

qq_34125999的博客 3906

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SpringCloud Hoxton.SR3版本 配置中心config搭建教程

引言 最近在搭建配置中心的时候遇到了很多问题,因为刚开始接触springcloud 对里面的很多只是并不是很了解,但是看了文档以后觉得 应该是很简单的,结果在搭建过程中都是大坑啊。下面先介绍正确的配置过程,然后在分享其中遇到的坑。 项目版本 spring-boot-version:2.2.5.RELEASE spring-cloud.version:Hoxton.SR3 注意:sprin...

Jack 架构师之路 3万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring Cloud Hoxton 版本微服务项目搭建 config 配置中心客户端

Spring Cloud Hoxton 版本微服务项目搭建 config 配置中心客户端 前言 在上一篇文章博主已经讲解了项目如何创建,不会的话可以前往学习,传送门:Spring Cloud Hoxton 版本微服务项目搭建eureka注册中心 以及 Spring Cloud Hoxton 版本微服务项目搭建 admin 监控管理中心 以及 Spring Cloud Hoxton 版本微服务项...

Mr_chen的博客 1406

<八>spring-cloud Hoxton.SR2 配置中心config服务端、客户端的搭建使用

spring-cloud Hoxton.SR2 配置中心config服务端、客户端的搭建使用 文章目录spring-cloud Hoxton.SR2 配置中心config服务端、客户端的搭建使用1、spring-cloud-config 配置中心server端项目搭建1.1、搭建新的项目`badger-spring-cloud-config-server`,pom文件如下1.2、主类上加注解`@EnableConfigServer`和eureka的注解`@EnableEurekaClient`1.3、y

鸭鸭的博客 990

Spring Cloud Hoxton 版本微服务项目搭建 config 配置中心集群搭建

Spring Cloud Hoxton 版本微服务项目搭建 config 配置中心集群搭建 前言 之前的文章讲解了配置中心的搭建,今天来讲一讲config-sever集群搭建。 config-sever集群搭建 在微服务架构中,所有服务都从配置中心获取配置,配置中心一旦宕机,会发生很严重的问题,下面我们搭建一个双节点的配置中心集群来解决该问题。 启动两个config-server分别运...

Mr_chen的博客 1294

Spring Cloud Hoxton系列的一个汇总篇!

对Spring Cloud Hoxton系列的一个汇总篇! 博主与前一段开始开始操刀搭建了Spring Cloud Hoxton版本的小项目,并且记录了搭建进程,后面还会继续更新该系列文章,分享给大家更多的实用东西!

Mr_chen的博客 1万+

SpringCloud组件之配置中心Config(Hoxton版本)

1.Config简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取

Trazen的专栏 1491

Spring Cloud入门-Config分布式配置中心(Hoxton版本),最新Java开发面试解答

配置中心添加安全认证 创建config-security-server模块 修改config-client的配置 config-sever集群搭建 使用到的模块 项目源码地址 项目使用的Spring Cloud为Hoxton版本,Spring Boot为2.2.2.RELEASE版本 Spring Cloud入门系列汇总 | 序号 | 内容 | 链接地址 | | — | — | — | | 1 | Spring Cloud入门-十分钟了解Spring Cloud | h..

m0_64384350的博客 499

【Hoxton.SR1版本】Spring Cloud Config服务配置中心

一、简介 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 Spring Cloud提供了Config Server来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理,维护起来非常困难。 Spring Cloud Config是什么? Spring Cloud Config为微服务架构中的微服务提供集中式的外部

weixiaohuai的博客 882

Spring Cloud Hoxton.SR9版本(十)Config配置中心+Bus消息总线

1.微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务,由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud Config为微服务架构中的微服务提供了集中化的外部配置支持,配置服务器为各个不同微服务应用的所有换进给提供了一个中心化的外部配置。SpringCloud Config分为服务端和客户端两个部分。服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配

haiertadiedie的博客 2002

Spring Cloud Config 配置中心环境搭建(Hoxton RC1版)

Spring Cloud Config 为分布式系统中的外部配置提供服务器和客户端支持。通过 Config Server 可以管理 Config Client 的外部属性。应用程序可以通过配置 bootstrap.yml,来加载配置中心下指定配置环境的属性

niaonao 1万+

Spring Cloud Config (Hoxton版) 使用

文章目录1. 简介2. 使用2.1 eureka-server2.2 独立模式2.2.1 config-server2.2.2 config-client2.3 添加认证2.3.1 config-server2.3.2 config-client2.4 多个配置中心2.4.1 config-server2.4.2 config-client 1. 简介 Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。服务端被称为分布式配置中心,它是个独

shpunishment的博客 598
上一篇: Spring Cloud(Hoxton版本)(七)Zuul服务网关
下一篇: RabbitMQ(一) 入门及消息分发机制
lonely feelings
博客等级 码龄8年 95粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值