Spring Cloud Config

在分布式系统中,尤其是当我们的分布式项目越来越多,每个项目都有自己的配置文件,对配置文件的统一管理就成了一种需要,而 Spring Cloud Config 就提供了对各个分布式项目配置文件的统一管理支持。

它包含 Client和 Server 两个部分,Server 提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client 通过接口获取数据、并依据此数据初始化自己的应用。

构建 Springcloud config 配置中心

1、创建 Spring Boot 项目并添加如下依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

2、在入口类上添加注解 @EnableConfigServer

3、在 application.yml中配置一下 git 仓库信息,这里使用的是gitee码云,需要先在 gitee上 创建一个 spring-cloud-config 的项目

server:
port: 3721
spring:
application:
name: springcloud-config-server
cloud:
config:
server:
git:
uri:
search-paths: config-center
username:
password:
  • uri 表示配置中心所在仓库的位置
  • search-paths 表示仓库下的子目录
  • username 表示你的 gitee 用户名
  • password 表示你的 gitee 密码

构建 Springcloud config 配置中心仓库

首先在本地创建一个文件夹,然后在里面创建一个文件夹叫 config-center,然后在 config-center中创建四个配置文件,如下:

application.properties
application-dev.properties
application-test.properties
application-online.properties

并分别写:

url=http://www.*.com
url=http://www.dev.com
url=http://www.test.com
url=http://www.online.com

将本地文件推送到远程仓库:

git init # 初始化
git add config-center/ # 将文件添加到暂存区
git commit -m 'add config-center' # 把文件提交到本地仓库
git remote add origin https://github.com/hnylj/spring-cloud-config.git # 添加远程主机
git push -u origin master # 将本地的 master 分支推送到 origin 主机

启动配置中心,通过/{application}/{profile}/{label}访问配置文件,

  • {application} 表示配置文件的名字,对应的配置文件即 application,
  • {profile} 表示环境,有 dev、test、online 及默认,
  • {label} 表示分支,默认我们放在 master 分支上

访问http://localhost:3721/application/dev/master,返回结果:

{
"name":"application",
"profiles":[
"dev"
],
"label":"master",
"version":"4ac223e179ba14cd15079e8f486cc69a5d3a7a43",
"state":null,
"propertySources":[
{
"name":
"source":{
"url":"http://www.dev.com"
}
},
{
"name":
"source":{
"url":"http://www.*.com"
}
}
]
}

构建 Springcloud config 配置中心客户端

  1. 创建一个Spring Boot 工程 springcloud-config-client,并添加依赖:

    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
  2. 创建 bootstrap.yml 文件,用于获取配置信息

    spring:
    application:
    name: application
    cloud:
    config:
    profile: dev
    label: master
    uri: http://localhost:3721/
    • uri:配置中心地址
  3. 创建一个 Controller 进行测试:

    @RestController
    public class ConfigController {
    @Value("${url}")
    private String url;
    @Autowired
    private Environment env; @RequestMapping("/cloud/url")
    public String url1 () {
    return this.url;
    }
    @RequestMapping("/cloud/url2")
    public String url2 () {
    return env.getProperty("url");
    }
    }

    访问:localhost:3722/cloud/url

Springcloud config 的工作原理

  1. 首先需要一个远程 Git 仓库,平时测试可以使用 GitHub,在实际生产环境中,需要自己搭建一个 Git 服务器,远程 Git 仓库的主要作用是用来保存我们的配置文件;
  2. 除了远程 Git 仓库之外,我们还需要一个本地 Git 仓库,每当 Config Server访问远程 Git 仓库时,都会克隆一份到本地,这样当远程仓库无法连接时,就直接使用本地存储的配置信息;
  3. 微服务 A、微服务 B 则是我们的具体应用,这些应用在启动的时会从 Config Server 中获取相应的配置信息;
  4. 当微服务 A、微服务 B 尝试从 Config Server 中加载配置信息的时候,Config Server 会先通过 git clone 命令克隆一份配置文件保存到本地;
  5. 由于配置文件是存储在 Git 仓库中,所以配置文件天然具有版本管理功能。

Springcloud config 的安全保护

生产环境中我们的配置中心肯定是不能随随便便被人访问的,我们可以加上适当的保护机制,由于微服务是构建在 Spring Boot 之上,所以整合 Spring Security是最方便的方式。

  1. 在配置中心添加:

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
  2. 在 配置中心目的 application.yml 中配置用户名密码:

    spring:
    security:
    user:
    name: author
    password: 123
  3. 在配置中心客户端的 bootstrap.yml 中:

    spring:
    application:
    name: application
    cloud:
    config:
    profile: dev
    label: master
    uri: http://localhost:3721/
    username: author
    password: 123
  4. 直接访问http://localhost:3721/application/dev/master:

    需要输入用户名、密码才能就访问

  5. 内部访问:localhost:3722/cloud/url,可以访问成功

SpringCloud(四) config的更多相关文章

  1. SpringCloud创建Config读取本地配置

    1.说明 Config Server获取配置支持的方式很多, 包括Git仓库(github/gitee等),任何与JDBC兼容的数据库, Subversion,Hashicorp Vault,Cred ...

  2. SpringCloud创建Config Client通过Eureka访问Config

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置. 读取配置的方式有两种, 第一种是直接配置Configer Server的URL, 第 ...

  3. SpringCloud创建Config Client配置读取

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置, 这里以创建Config Client服务为例, 基于已经创建好的Config Ser ...

  4. 【微服务】- SpringCloud中Config、Bus和Stream

    文章目录 SpringCloud中Config 1.Config的简介 官网 分布式系统面临的问题 config是什么 如何使用 能做什么 与git的配合使用 2.Config服务端的配置和测试 准备 ...

  5. springcloud(四):应用配置中心config的安全设置

    springcloud应用配置中心config的安全设置 在springcloud应用开发中,为了方便在线管理我们的配置文件,通常会配一个配置中心config-server,这里托管着应用的一些配置文 ...

  6. SpringCloud的Config:ConfigServer注册到EurekaServer中,变成一个Eureka服务

    一.概念与定义 1.将SpringCloud ConfigServer注册到 EurekaServer,以便ConfigClient以服务的方式引用ConfigServer 2.客户端不再引用 Con ...

  7. Spring-Cloud之Config配置中心-7

    一.我们前面基本上都是讲解的Spring Cloud Netflix的组件,下面我们会重点说Spring Cloud Config分布式配置中心.为什么需要这个组件来管理配置呢?在分布式应用开发过程中 ...

  8. SpringCloud之Config配置中心+BUS消息总线原理及其配置

    一.配置中心作用 在常规的开发中,每个微服务都包含代码和配置.其配置包含服务配置.各类开关和业务配置.如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题.当系统逐步迭代,其微服 ...

  9. springcloud之config配置中心-Finchley.SR2版

    本篇和大家分享的是springcloud-config配置中心搭建,写到这里突然想起自己曾今开源过基于Redis发布订阅编写的一个配置中心,刚看了git星数有点少哈哈,这里顺势发个连接欢迎大侠们点赞: ...

随机推荐

  1. Linux—ps -ef 命令输出信息的具体含义(显示所有正在运行的命令程序)

    linux 中使用 ps -ef 输出参数的具体含义 功能:显示所有正在运行的命令程序 UID: 说明该程序被谁拥有PID:就是指该程序的 IDPPID: 就是指该程序父级程序的 IDC: 指的是 C ...

  2. 利用charles映射解决夜神模拟器安装xposed-v89-sdk25-x86.zip

    最近在玩xposed框架,前前后后搞了两天,浪费一个周末,总算把踩过的坑都踩了一遍.. 比如大家肯定遇到的的一个问题:夜神模拟器打开xposed安装器之后,为什么下载不了xposed-v89-sdk2 ...

  3. C# / VB.NET 在Word中嵌入多媒体(视频、音频)文件

    Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...

  4. python 从ubantu环境迁移到windows环境

    下载安装Anaconda3 Anaconda3-2021.05-Windows-x86_64.exe 默认安装目录 C:\ProgramData\Anaconda3 可以启动Anaconda查看不同的 ...

  5. c学习 - 第八章:函数

    8.7 数组作函数的参数 1.数组元素作函数的参数--值传递,单向传递 2.数组名做函数的参数--地址传送 (1)实参:数组名做实参,传递的是数组首元素的地址 (2)形参:使用同类型的数组名或指针变量 ...

  6. Linux基础命令---enable开启shell命令

    enable enable指令用来关闭或者激活shell内部命令.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法       enable [-a]   ...

  7. Android Bitmap 全面解析(一)加载大尺寸图片

    压缩原因:1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为;2.最重要的是图片过大时直接加载原图会造成OOM异常(out of memory ...

  8. vue项目windows环境初始化

    下载nodejs zip包并加载到环境变量 nodejs的版本最好使用12版,而不是最新版 npm install webpack -gnpm install -g yarnyarn config s ...

  9. 【Linux】【Services】【Package】rpm

    CentOS系统上rpm命令管理程序包:         安装.升级.卸载.查询和校验.数据库维护                   rpm命令:rpm  [OPTIONS]  [PACKAGE_F ...

  10. Docker从入门到精通(三)——概念与执行流程

    前面我们大概介绍了docker是什么以及如何安装docker,但是对里面出现的一些名词,可能大家还不熟悉,这篇文章就来为大家解惑. 1.容器化平台 Docker 是提供应用打包,部署与运行应用的容器化 ...