【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信(含源代码)(十三)

发布于:2025-05-17 ⋅ 阅读:(23) ⋅ 点赞:(0)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)

 springcloud学习(dalston.sr1)系统文章汇总如下:

【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)

【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建(含源代码)(二)

【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)

【springcloud学习(dalston.sr1)】Eureka 客户端服务注册(含源代码)(四)

【springcloud学习(dalston.sr1)】服务消费者通过restTemplate来访问服务提供者(含源代码)(五)

【springcloud学习(dalston.sr1)】Eureka 服务发现(含源代码)(六)

【springcloud学习(dalston.sr1)】Ribbon负载均衡(含源代码)(七)

【springcloud学习(dalston.sr1)】使用Feign实现接口调用(含源代码)(八)

【springcloud学习(dalston.sr1)】Hystrix服务熔断(含源代码)(九)

【springcloud学习(dalston.sr1)】Hystrix服务降级(含源代码)(十)

【springcloud学习(dalston.sr1)】Hystrix Dashboard服务监控(含源代码)(十一)

【springcloud学习(dalston.sr1)】Zuul路由访问映射规则配置及使用(含源代码)(十二)

【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信(含源代码)(十三)

【springcloud学习(dalston.sr1)】Config配置中心-Configclient端通过和Config server端通信来获取配置文件信息(含源代码)(十四)

(一)对Spring cloud config的理解

通常情况下,springCloud会包含多个微服务,比如电商项目,可能包括商品服务、订单服务、库存服务、商家服务、物流服务、用户服务、登录服务等。每个服务都是一个独立的springboot项目。并且还包括eureka注册中心、zuul网关服务等,每个项目都有独立的application.yml配置文件,这样整个系统中就会出现大量的配置文件,如果全部靠手工独立维护,极为不便。spring cloud提供了Config Server来解决这个问题。通过spring cloud config,我们可以把配置文件全部放在git服务器上。并且项目中用到的配置,可以在启动时,借助config server,从git服务器进行拉取。

也即config分为server端和client端,访问的整体情况是 config client可以和config server进行通信,而config server可以和git服务器进行通信。这里我们首先讨论的是config server端如何与git进行通信。

(二)spring cloud config server端的搭建

(1)git远程仓库的创建

正如前面所说,我们将配置文件放在git服务器上进行管理,肯定需要有个git服务器,这里我选用的的是gitee(可以在浏览器中进行访问,我之前在gitee上面创建了一个microservicecloud-config1 项目,其访问地址为https://gitee.com/lichuangjava/microservicecloud-config1.git,如下图)。

为了给该仓库推送文件,我先将其clone到本地如下图,可以通过windows端的git工具来完成项目拉取,然后我们新增几个yml文件(需要注意的是文件必须是UTF-8格式,否则会出问题),然后通过git命令行工具再推送至远程仓库。

新增几个yml文件到本地后,首先可以通过git status来查看本地文件和git服务器的关联情况,然后通过git add . 可以将本地新增的文件进行添加到git待提交文件,然后通过git commit -m "注释",可以增加本次提交的注释信息,然后通过git push origin master则将文件推送到了远程仓库的master分支。然后在gitee页面进行刷新,即可看到提交的相关文件信息。这样我们git远程仓库就搭建好了。

(2)这里我们创建一个config server端的项目microservicecloud-config-3344,该项目的整体结构如下:

然后我们在POM文件中增加相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud2025</artifactId>
        <groupId>com.company</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>microservicecloud-config-3344</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.company</groupId>
            <artifactId>microservicecloud-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- actuator监控信息完善 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!-- springcloud config server配置 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>

</project>

然后在项目的application.yml文件中增加相关配置信息

server:
  port: 3344

spring:
  application:
    name: microservicecloud-config
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/lichuangjava/microservicecloud-config1.git
          #git@gitee.com:lichuangjava/microservicecloud-config1.git #git上面仓库名称
          #https://gitee.com/lichuangjava/microservicecloud-config.git

这里是通过spring.cloud.config.server.git.uri配置项指定了git的地址

然后我们创建一个启动类Config3344Application.java,并在启动类上增加@EnableConfigServer,以表明该项目是一个config server端工程。

package com.company.config;

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

/**
 * config server端,用于和gitee.com进行通信,并从git服务器获取配置信息
 * http://config-3344.com:3344/application-dev.yml
 * http://config-3344.com:3344/application-test.yml
 */
@SpringBootApplication
@EnableConfigServer
public class Config3344Application {

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

(三)config server端的使用

我们前面已经准备了一个application.yml上传至git服务器中,其内容如下,该配置文件中有dev环境和test环境,两种环境的配置项

接下来,我们启动config server端的项目microservicecloud-config-3344,然后在浏览器地址栏输入localhost:3344/application-dev.yml ,其中地址栏的application-dev.yml,application表示访问的是git服务器的application文件,而dev表示获取的是该配置文件的开发环境内容,如下图

当然,我们也可以通过localhost:3344/application-test.yml访问application.yml文件中的测试环境配置内容,如下图

而如果我们访问一个生成环境(注意配置文件中没有),比如http://localhost:3344/application-prod.yml,可以看到界面返回的信息中不包括任何dev和test环境的内容

由此可见,确实可以通过Config server实现和git之间的服务通信,返回git上的相关配置信息。