SpringCloud-Config、Git环境搭建、服务端连接Git配置、客户端实现远程访问、远程配置实战、bootstrap.yml

2023-11-17

前言

SpringCloud config分布式配置中心

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环节提供了一个中心化的外部配置
SpringCloud Config分为客户端服务端
在这里插入图片描述

  • 服务端:分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密,解密信息等访问接口
  • 客户端:通过指定的配置中心来管理应用资源以及业务的相关配置内容,并在启动的时候从配置中心获取和加载配置信息。
  • 配置服务器默认采用Git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容

为什么需要SpringCloud config

微服务意味着要把业务拆成一个个小模块,每个小模块都需要单独的配置信息才能运行,那么一旦业务多了,那么配置文件也很多,当需要进行修改的时候是非常麻烦的,因此,一套集中式的、动态的配置管理设施必不可少!

SpringCloud config能做什么

  • 集中管理配置文件
  • 不同环境,不同配置,动态化更新,分环境部署
  • 运行期间动态更新配置
  • 服务不需要重启,但是需要热部署
  • 将配置信息以Rest接口的形式暴露

新建Git仓库以及配置

由于国内访问GitHub较慢,因此我们使用码云来作为我们的远程配置仓库
我们进入码云新建一个仓库
在这里插入图片描述

在这里插入图片描述
创建成功之后,我们需要把仓库部署到本地
在这里插入图片描述
我们使用Git,将远程仓库的配置文件连接到本地
新建文件夹,在这里放你的配置文件,然后使用命令来连接远程仓库

git clone 仓库地址

在这里插入图片描述
当然,你需要先配置Git的用户名和邮箱还有生成SSH密钥
在这里插入图片描述
如何生成SSH密钥
如何生成公钥

配置完成之后就可以跟远程建立连接了
在这里插入图片描述
接着我们新建一个application.yml并编辑
在这里插入图片描述

Spring:
  profiles:
    active: dev
---
spring:
  profiles: dev
  application:
    name: springcloud-config-dev
---
spring:
  profiles: test
  application:
    name: springcloud-config-test

最后提交到码云上面

提交修改文件

  1. 进入文件夹
    在这里插入图片描述
    这里就是进入你放配置文件的目录
  2. 添加修改的文件
    在这里插入图片描述
    使用命令git add . 添加所有修改后的文件
  3. 查看文件状态
    在这里插入图片描述
    使用命令git status 查看文件上传状态,发现有一个文件即将被提交
  4. 提交文件
    使用命令git commit -m "first commit"提交文件
    在这里插入图片描述
  5. 上传到云端
    使用命令git push origin master
    在这里插入图片描述
    在这里插入图片描述

config服务端连接Git配置

新建Module

在IDEA中新建一个module
springcloud-config-server-3344

导入依赖

 <dependencies>
        <!--config-->
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
   
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

编写配置

server:
  port: 3344
spring:
  application:
    name: springcloud-config-server
    # 连接远程仓库
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/xxx/springcloud-config.git # https,不是git

注意这里的uri,是自己的远程仓库地址,自行修改,用的是https协议

编写启动类

package com.cjh.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class Config_Server_3344 {
    public static void main(String[] args) {
        SpringApplication.run(Config_Server_3344.class,args);
    }
}

启动测试

在这里插入图片描述

总结

通过我们的config-sever我们可以连接到git访问其中的资源以及配置,我们可以用客户端去读取配置

客户端连接config服务端访问远程

编写客户端配置文件

我们在本地配置中心中配置我们客户端配置文件,然后通过服务端远程访问
在这里插入图片描述

spring:
  profiles:
    active: dev
---
server:
  port: 8201
#spring配置
spring:
  profiles: dev
  application:
    name: springcloud-provider-dept


#eureka的配置,服务注册到哪里
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
---
server:
  port: 8202
#spring配置
spring:
  profiles: test
  application:
    name: springcloud-provider-dept


#eureka的配置,服务注册到哪里
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/

提交到远程仓库

在这里插入图片描述
在这里插入图片描述

编写客户端

编写一个module

springcloud-config-client-3355

导入依赖

 <dependencies>
  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

编写配置

在这里插入图片描述
bootstrap.yml

# 系统级的配置
spring:
  cloud:
    config:
      name: config-client #需要从git读取的资源名称,不需要后缀
      uri: http://localhost:3344
      profile: dev
      label: master
  # http://localhost:3344/config-client-dev.yml/master

application.yml

# 用户级别的配置
spring:
  application:
    name: springcloud-config-client-3355

编写Controller

ConfigClientController
这里我们写一个controller来测试是否从服务端拿到远程的数据了

package com.cjh.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {
    @Value("${spring.application.name}")
    private String applicationName;

    @Value("${eureka.client.service-url.defaultZone}")
    private String eurekaServer;

    @Value("${server.port}")
    private String port;

    @RequestMapping("/config")
    public String getConfig(){
        return "applicationName="+applicationName+"eurekaServer="+eurekaServer+"port="+port;
    }
}

编写启动类

package com.cjh.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ConfigClient_3355 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClient_3355.class,args);
    }
}

测试

我们启动服务端3344和客户端3355
我们要先确保服务端可以拿到我们git云端的数据
在这里插入图片描述
然后启动客户端,我们发现客户端已经连接到服务端,并且拿到了远程的配置文件

在这里插入图片描述
注意:我们的客户端没有写端口号,因此是默认从服务端拿到了端口号8201
在这里插入图片描述
在这里插入图片描述
我们只是开启了两个服务,内存就占用高达92%

bootstrap.yml

bootstrap.yml和application.yml都是属于配置文件
但是bootstrap.yml属于系统级配置文件,而application.yml属于用户级配置文件,必然是系统级配置文件优先级更高

bootstrap.properties比application.properties的优先级要高
由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;

而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。

但是在SpringCloud 2020. 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap从新导入进来就会生效了。*

因此,我们要导入依赖

     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>

总结

我们实现了配置与编码解耦,客户端固定连接服务端配置中心即可,需要修改配置只需要在远程修改即可,但是这也出现了安全性的问题,代码不用变化,配置在远程修改就可以。

改造项目

我们现在想把我们之前的配置文件全部放在远程云端,怎么操作呢?

  • 把对应的配置文件放在云端
  • 项目的原有的配置文件删除,并建立bootstrap.yml和application.yml,分别对应连接config服务端以及配置项目名字
  • 启动即可
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud-Config、Git环境搭建、服务端连接Git配置、客户端实现远程访问、远程配置实战、bootstrap.yml 的相关文章

  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • 有没有办法让 git flow 显示它在幕后执行的命令?

    有什么方法可以让 git flow 提前告诉我当我执行 flow 命令时它将执行的确切 git 命令吗 或者告诉我它是东吗 我只能看到输出和摘要吗 你可以使用Git的GIT TRACE 环境变量 http git scm com docs
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • 将bitbucket发布到数字海洋

    我本质上是试图使用 bitbucket 来理解 git 的概念 我一直在通过修改本地帐户和 bitbucket 帐户之间的文件来练习版本控制 事实证明这很有帮助 现在我正在尝试弄清楚如何将文件从 bitbucket 或者我猜是 GitHub
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中
  • 如何减少 Bitbucket 上的 git repo 大小?

    我的问题摘要 在我向两个现有文件添加了几百个字节后 我在 Bitbucket 上的一个私人存储库的大小突然增加了一倍多 该存储库现在超过 2GB 这导致 Bitbucket 将其置于只读模式 因为它处于只读模式 所以我无法推送会减少存储库大
  • 显示 master 之前/之后有多少提交分支的别名

    新的 Bitbucket Branches 页面非常棒 它显示每个分支领先 落后于 master 的提交数量 是否有显示相同信息的 Git 别名 信息应显示 分店名称 上次更新是什么时候 其背后有多少提交 有多少提交领先于 master 看
  • git 2.32 git push -u origin master 没有任何反应

    I ve starting to use git github and I m stucked on how to push my codes to github I m following some tutorials and when
  • 有没有一个简单的命令可以将分支转换为标签?

    我即将完成将 哑快照 转换为 git 的繁琐过程 这个过程进展得非常顺利 感谢这个重命名过程 https stackoverflow com questions 6628539 how to tell git that its the sa

随机推荐

  • 自然辩证法(研究生)期末考试题库

    仅供参考 后果概不负责 第一讲 实际上就是科学与马克思主义哲学的纽带和桥梁 这就如同历史唯物主义是马克思主义哲学和各门社会科学的中间环节一样 A 社会学B 哲学C 科技与社会D 自然辩证法 答案 D 自然界 按照我们通常的理解 其内涵包括上
  • 【已解决】Hyperledger Fabric 2.3创建通道失败问题Channel creation failed

    简介 问题描述 在按照readthedocs教程进行超级账本框架 fabric区块链的学习过程中 到通道创建这一步一直失败 即无法成功运行 network sh up createChannel 出现的错误提示 直接去搜索这个segment
  • mc有无限火力的服务器ip,MC小游戏:起床战争-无限火力I(上)

    再次来到花雨庭 我径直走向起床战争 无限火力 这次陪同我的还有24 25和小9 钱猫 我 也来了 为什么把我说漏了 还有钱猫 钱猫 这还差不多 朝着无限火力的NPC点了一下 很快 就到了游戏大厅 25慌张地说道 你看这群人 要么是VIP 要
  • java实现将数据导出为word功能(文字,表格,图片的循环导出)

    1 配置文件的准备 1 导出功能实现所需要的pom文件
  • 高维空间最近邻逼近搜索算法评测

    高维空间最近邻逼近搜索算法评测 最近邻方法是机器学习中一个非常流行的方法 它的原理很容易理解 邻近的数据点是相似的数据点 更可能属于同一分类 然而 在高维空间中快速地应用最近邻方法 却是非常有挑战性的工作 全球最大的流媒体音乐服务商Spot
  • Intellij导入子项目时,maven列表子项目灰色不可用---解决方法

    导入子项目的module时 左侧project目录中有一个module图标右下角没有小蓝点 maven管理列表该module为灰色 表明未被管理 尝试几次后终于找到解决方案 贴一张调好过后的图 第一步 找到父项目 点击右键 选择Open M
  • 大话Stable-Diffusion-Webui-客制化主题(二)

    文章目录 前置知识 在gradio项目中使用客制化的主题 创建一个完整的Gradio主题 上传客制化主题至huggingface 笔者DIY的主题 接着 大话Stable Diffusion Webui 客制化主题 一 继续探讨下基于gra
  • 用python实现输出3位水仙花数

    3位水仙花数 是指一个三位整数 其各位数字的3次方和等于该数本身 例如 ABC是一个 3位水仙花数 则 A的3次方 B的3次方 C的3次方 ABC 请按照从小到大的顺序输出所有的3位水仙花数 请用 逗号 分隔输出结果 shuixianhua
  • 黑马程序员---类加载器

    android培训 java培训 期待与您交流 简要介绍什么是类加载器和类加载器的作用 Java虚拟机中可以安装多个类加载器 系统默认三个主要类加载器 每个类负责加载特定位置的类 BootStrap ExtClassLoader AppCl
  • js基础之闭包

    作为前端开发 闭包是时时刻刻都在使用的 理解闭包是十分重要的 下面从闭包的定义 使用场景 及优缺点进行总结 帮助大家更好的理解闭包 什么是闭包 引用自 MDN关于闭包的描述 闭包 closure 是一个函数以及其捆绑的周边环境状态 lexi
  • IDEA中SVN的使用大全

    SVN 在日常工作中 给我们带来许多的方便和高效 今天特此记录一下在 IDEA 中如何使用 SVN 一 IDEA 连接 SVN 打开 IDEA 选择菜单 File gt Settings 搜索 Subversion 如图所示 我们在右侧的框
  • vw移动端布局,vue项目初始化构建

    大漠老师的vue项目vw布局 现在已经收费 1 构建项目 vue init webpack demo 之前的准备工作 像下载node啥的就不多逼逼了 2 引入 vw 布局所需要的包 npm i postcss aspect ratio mi
  • Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)

    ubuntu 16 04 安装后分辨率只有一个选项 1024x768 使用 xrandr 命令出现错误 xrandr Failed to get size of gamma for output default 使用 cvt 命令也无法设置
  • FPGA面试真题解析(3)

    9 寄存器的Tsu 建立时间 是如何定义的 硬件逻辑实习岗 A 在时钟沿到来之后数据保持稳定的时间 B 在时钟沿带来前后数据都需要保持稳定的时间 C 在整个时钟周期数据保持稳定的时间 D 在时钟沿到来之前数据保持稳定的时间 解析 考察数字电
  • 知识蒸馏概念

    迁移学习侧重不同领域 知识蒸馏侧重不同模型 知识蒸馏模型就是把一个大的教师模型蒸馏成一个小的学生模型 教师模型会的多而且杂 体型大的网络 而学生网络小而轻量化 知识蒸馏就是模型压缩的一个手段 教师模型 学生模型 预训练的大模型 通过海量数据
  • 四象限运行模式_快速检测动车组网压中断的方法,保障高铁运行安全

    弓网离线导致的网压中断 会对动车组变流系统的长期安全可靠运行产生不利影响和潜在安全隐患 为此 北京交通大学电气工程学院 北京市轨道交通电气工程技术研究中心的研究人员张钢 郭尝君 郝峰杰 刘志刚 在2019年 电工技术学报 增刊2上撰文 提出
  • redis学习笔记

    2020最新 Redis超详细版教程通俗易懂 视频地址 https www bilibili com video BV1FZ4y1u7ny p 1 1 1Redis介绍 1由于用户量增大 请求数量也随之增大 数据压力过大 2多台服务器之间
  • Unlimited “使用GPT-4 ”!它来了!

    备注本文末尾附录注册登录过程 平台介绍 聊天机器Chat fore人front ai是一为款基于人主工智能的题聊天的机器人主平台 旨在帮菜助企 业提可以高客户服务质是量和一效率 该平款台利用自然语精言处理技术和机器致学习的算法 能够自牛动排
  • 人生本过客,何必太执着

    仓央嘉措曾在诗中写道 世间事 除了生死 哪一桩不是闲事 的确 人这一生 其实就是一场单程旅行 虽然过程未知 风景不同 但已知的是 我们都有同一个结局 很多时候 我们却放不下内心执念 执着过去的人和事 担忧当下和未来 为种种遗憾伤怀 反而忘了
  • SpringCloud-Config、Git环境搭建、服务端连接Git配置、客户端实现远程访问、远程配置实战、bootstrap.yml

    SpringCloud config分布式配置中心 前言 SpringCloud config分布式配置中心 为什么需要SpringCloud config SpringCloud config能做什么 新建Git仓库以及配置 提交修改文件