IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud-27-Spring Cloud Config分布式配置组件介绍和搭建 -> 正文阅读

[Java知识库]SpringCloud-27-Spring Cloud Config分布式配置组件介绍和搭建

11 Config:Spring Cloud分布式配置组件

11.1 Spring Cloud Config概述

  • 分布式系统面临的配置文件的问题:分布式微服务系统意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务,几乎所有服务的运行都离不开配置文件的支持,这些配置文件通常由各个服务自行管理,以 properties 或 yml 格式保存在各个微服务的类路径下,例如 application.properties 或 application.yml 等。

  • 这种将配置文件散落在各个服务中的管理方式,存在以下问题:

    • 管理难度大:配置文件散落在各个微服务中,难以管理。
    • 安全性低:配置跟随源代码保存在代码库中,容易造成配置泄漏。
    • 时效性差:微服务中的配置修改后,必须重启服务,否则无法生效。
    • 局限性明显:无法支持动态调整,例如日志开关、功能开关。
  • 所以一套集中式的配置中心对配置进行统一管理,动态的配置管理设施是必不可少的。市面上开源的配置中心有很多,例如百度的 Disconf、淘宝的 diamond、360 的 QConf、携程的 Apollo 等都是解决这类问题的。SpringCloud提供了ConfigServer来解决这个问题。

  • Spring Cloud Config 是由 Spring Cloud 团队开发的项目,它可以为微服务架构中各个微服务提供集中化的外部配置支持。

    Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,将配置文件集中存储在一个外部的存储仓库或系统(例如 Git 、SVN 等)中,对配置的统一管理,以支持各个微服务的运行。

springboot多环境配置和yml多文档块是一种方式,但也是比较分散

接下来回顾下在springboot阶段配置文件的内容

  • 多环境配置:

  • application-test.properties 代表测试环境配置

  • application-dev.properties 代表开发环境配置

  • 优先使用使用application.properties主配置文件,然后在里面可以指定需要激活的环境spring.profiles.active=dev

yml多文档块按以下方式配置:

application.yml,若yml和properties同时都配置了端口,但在yml或properties中没有激活其他环境 , 默认会使用properties配置文件的,因为properties类型的配置文件的优先级高

server:
  port: 8081
#选择要激活那个环境块
spring:
  profiles:
    active: test

---
server:
  port: 8083
spring:
  profiles: dev #配置开发环境的名称


---
server:
  port: 8084
spring:
  profiles: prod  #配置生产环境的名称
  • Spring Boot 自动查找和加载properties和yml配置文件的位置顺序

file:./config/*/ |项目路径下的config文件夹配置文件

file:/config/application.properties | 项目路径

file:/application.properties

classpath:/config/application.properties | src下的java或resources为类路径

classpath:/application.properties

  • Spring Cloud Config 包含以下两个部分:

    • Config Server:也被称为分布式配置中心,它是一个独立运行的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密信息和解密信息的访问接口。
    • Config Client:指的是微服务架构中的各个微服务,它们通过 Config Server来管理应用资源以及与业务相关的配置内容 ,并从 Config Sever 中获取和加载配置信息。
  • Spring Cloud Config 默认使用 Git 存储配置信息,因此使用 Spirng Cloud Config 构建的配置服务器天然就支持对微服务配置的版本管理。我们可以使用 Git 客户端工具方便地对配置内容进行管理和访问。除了 Git 外,Spring Cloud Config 还提供了对其他存储方式的支持,例如 SVN、本地化文件系统等。

  • Spring Cloud Config 工作原理如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YCPvGxxk-1664771379907)(…/typora-user-images/image-20220924121621584.png)]

  • Spring Cloud Config 工作流程如下:

    1. 开发或运维人员提交配置文件到远程的 Git 仓库。
    2. Config 服务端(分布式配置中心)负责连接配置仓库 Git,并对 Config 客户端暴露获取配置的接口。
    3. Config 客户端通过 Config 服务端暴露出来的接口,拉取配置仓库中的配置。
    4. Config 客户端获取到配置信息,以支持服务的运行。
  • Spring Cloud Config 具有以下特点:

    • Spring Cloud Config 由 Spring Cloud 团队开发,能够与 Spring 的生态体系无缝集成。
    • Spring Cloud Config 将所有微服务的配置文件集中存储在一个外部的存储仓库或系统(例如 Git)中,统一管理。
    • Spring Cloud Config 配置中心将配置以 REST 接口的形式暴露给各个微服务,以方便各个微服务获取。
    • 微服务可以通过 Spring Cloud Config 向配置中心统一拉取属于它们自己的配置信息。
    • 当配置发生变化时,微服务不需要重启即可感知到配置的变化,并自动获取和应用最新配置。
    • 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。
    • 一个应用可能有多个环境,例如开发(dev)环境、测试(test)环境、生产(prod)环境等等,开发人员可以通过 Spring Cloud Config 对不同环境的各配置进行管理,动态化的配置更新,且能够确保应用在环境迁移后仍然有完整的配置支持其正常运行。

11.2 windows安装git请翻阅git-1-版本控制介绍和安装配置

11.3 SpringCloud config分布式配置中心与gitee整合

  • 由于Spring Cloud Config默认使用Git来存储配置文件(也有其他方式,比如支持SVN和本地文件),但是最推荐的还是Git,而且使用的是http/https访问的形式:
  • 在 Github 上创建一个名为 springcloud-config 的仓库(Repository)并获取该仓库的地址。由于 Github 站点对于国内用户来说不够稳定,很可能存在加载缓慢等问题,因此我们可以在码云或上执行该操作。前提需要提前在码云上注册账号。Github /码云(gitee)/coding devops。都是基于git的代码托管平台和研发平台
  • Gitee 提供了基于SSH协议的Git服务,使用http协议不用密钥,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。怎样生成公钥将生成的ssh公钥(包含邮箱地址)复制到公钥框中,标题自动显示。点击确定即可完成配置账户/仓库的SSH公钥。

需要注意的是:公钥是仓库为本地电脑生成的令牌,如果换了一台电脑,那么就需要重新生成那台电脑的ssh公钥
在这里插入图片描述

  • 转到个人主页,新建仓库
    在这里插入图片描述

  • 新建仓库
    在这里插入图片描述

  • 创建好之后复制仓库git或https地址
    在这里插入图片描述

  • 选择一个存放代码的位置,右键选择git bash here,输入以下命令,然后针对Https协议需要输入仓库的用户名和密码才能下载,而git协议地址不用用户名和密码。

git clone [url]  #Https或git协议的地址

在这里插入图片描述

  • 在springcloud-config文件中添加application.yml配置文件
    在这里插入图片描述
spring:
  profiles:
    active: dev

---
spring:
  config:
    activate:
      on-profile: dev
  application:
    name: springcloud-config-dev
config:
  info : springcloud-config-test
  version: 1.0.0



---
spring:
  config:
    activate:
      on-profile: test
  application:
    name: springcloud-config-test
config:
  info : springcloud-config-test
  version: 1.0.0



---
spring:
  config:
    activate:
      on-profile: prod
  application:
    name: springcloud-config-prod
config:
  info : springcloud-config-test
  version: 1.0.0
  • 使用git命令行来将这个文件提交仓库,需要4步操作
  1. 先进到这个目录,在执行git add .添加当前目录的所有文件到暂存区
cd springcloud-config
# 添加当前目录的所有文件到暂存区
$ git add .
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
  1. 查看状态
$ git status

在这里插入图片描述

3.提交暂存区到本地仓库区

# 提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

在这里插入图片描述
4.提交到远程仓库

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

在这里插入图片描述

origin 代表你远程库的别名 可以随意命名的 不是当前用户的意思

  • 刷新gitee仓库,application.yml文件已提交
    在这里插入图片描述
    在这里插入图片描述

下一篇:SpringCloud-28-Spring Cloud Config创建Config Server

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:27:04  更:2022-10-08 20:29:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:30:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码