飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

SpringCloud(四) config

时间:2021-12-26  作者:wzp123456  

Spring Cloud Config

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

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

构建 Springcloud config 配置中心

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

<dependency>
 <groupId>域名d</groupId>
 <artifactId>spring-cloud-config-server</artifactId>
</dependency>

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

3、在 域名中配置一下 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中创建四个配置文件,如下:

域名erties
application-域名erties
application-域名erties
application-域名erties

并分别写:

url=http://www.*.com
url=http://域名
url=http://域名
url=http://域名

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

git init # 初始化
git add config-center/ # 将文件添加到暂存区
git commit -m \'add config-center\' # 把文件提交到本地仓库
git remote add origin https://域名/hnylj/spring-cloud-域名 # 添加远程主机
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://域名"
            }
        },
        {
            "name":
            "source":{
                "url":"http://www.*.com"
            }
        }
    ]
}

构建 Springcloud config 配置中心客户端

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

    <dependency>
     <groupId>域名d</groupId>
     <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
  2. 创建 域名 文件,用于获取配置信息

    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 域名;
        }
        @RequestMapping("/cloud/url2")
        public String url2 () {
            return 域名roperty("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>域名</groupId>
     <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
  2. 在 配置中心目的 域名 中配置用户名密码:

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

    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,可以访问成功

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。