在Spring Cloud Config Github配置中心

发布时间:2024年01月08日

关于Spring Cloud系列我们其实讲解了很多,但是这里我们介绍一下Spring Cloud Config,它是一个解决分布式系统的配置管理方案,他包含了Client 和 Server 两个部分,server提供配置文件的存储,以接口的方式将配置文件内容提供出去,Client通过接口获取相关数据,并依据数据初始化自己的应用,Spring Cloud 使用git或者svn存放配置文件,默认情况下使用git。

我们第一步,在github上创建一个文件夹Springcloud-config用来存放配置文件,我们可以创建三配置文件,分别如下:

//开发环境
springcloud-config-dev.properties
//测试环境
springcloud-config-test.properties
//生产环境
springcloud-config-pro.properties

之后我们为每个配置文件都写一个springcloud.miaow,属性值分别是,你好,miaow-dev/test/pro。

springcloud:
  miaow: hello,miaow-dev
springcloud:
  miaow: hello,miaow-test
springcloud:
  miaow: hello,miaow-pro

这个是我们正常的开发逻辑,但是为了不一样,我采用我自己的方式进行,如下图所示我在gitee上进行
在这里插入图片描述

在这里插入图片描述

server端

pom.xml文件

<?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>springCloud</artifactId>
        <groupId>com.miaow</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-cloud-config-git</artifactId>

    <name>spring-cloud-config-git</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

配置相关文件Application.yml

server:
  port: 3421
spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ # git仓库的地址
          search-paths: /**/springcloud-config-server  # git仓库地址下的相对地址,可以配置多个,用,分割。
          username: #Git仓库用户名
          password: #Git仓库密码

启动类:

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

客户端Client

<?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>springCloud</artifactId>
        <groupId>com.miaow</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-cloud-config-git</artifactId>

    <name>spring-cloud-config-git</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

配置文件Application.yml

注意这个是我们作为客户端的配置文件,可以进行多个添加,我们根据Spring Boot解析配置文件的先后顺序分别创建两个文件:
application.yml和bootstrap.properties。

application
server:
  port: 4322
spring:
  application:
    name: spring-cloud-config-client
bootstrap
spring.cloud.config.name=springcloud-config # 如果以我的方式,springcloud-zuul-dev。
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:8080/
spring.cloud.config.label=master
spring.application.name:对应{application}部分
spring.cloud.config.profile:对应{profile}部分
spring.cloud.config.label:对应git的分支。如果配置中心使用的是本地存储,则该参数无用
spring.cloud.config.uri:配置中心的具体地址
spring.cloud.config.discovery.service-id:指定配置中心的service-id,便于扩展为高可用配置集群。

启动类

@SpringBootApplication
public class ClientApplication {

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

创建一个控制层

@RestController
public class HelloController {

    @Value("${springcloud.miaow}")
    private String hello;

    @RequestMapping("/hello")
    public String from() {
        return this.hello;
    }
}

之后我们启动项目并访问:http://localhost:4322/hello

如果返回:hello,miaow-dev,,说明已经正确的从server端获取到了参数。到此一个完整的服务端提供配置服务,客户端获取配置参数的例子就完成了。

将配置文件上传到GitHub仓库中,按照以下格式命名

{application}-{profile}.properties

结束

使用GitHub作为配置中心的好处如下:

  • 集中管理配置文件:将所有应用程序的配置文件存储在一个地方,方便管理和维护。
  • 动态刷新配置:当配置文件发生变化时,Spring Cloud应用程序可以自动获取最新的配置,无需重启应用程序。
  • 安全性:GitHub提供了访问控制和身份验证功能,可以保证配置文件的安全性。
  • 可扩展性:可以使用Git的分支和标签功能,为不同的环境和版本管理不同的配置文件。
  • 可视化管理:可以使用GitHub的Web界面,方便地查看和编辑配置文件。
文章来源:https://blog.csdn.net/qq_45922256/article/details/135465043
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。