110_SpringCloudConfig 分布式配置


分布式系统面临的--配置文件的问题

image.png

什么是SpringCloudConfig分布式配置

image.png
image.png

SpringCloudConfig分布式配置能干嘛

image.png

Git环境搭建

:::info
参考文档:https://www.yuque.com/yongqing-d9jyg/eptb8x/cx017a
:::

码云创建仓库

image.png
image.png
:::info
地址:git@gitee.com:wl3pbzhyq/springcloud-config.git
:::

克隆远程仓库到本地

Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$ git clone git@gitee.com:wl3pbzhyq/springcloud-config.git
Cloning into 'springcloud-config'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), 13.90 KiB | 4.63 MiB/s, done.

Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$

image.png

创建application.yml并推送到远程仓库

image.png

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

Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$ cd springcloud-config/

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git add .

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   application.yml

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git commit -m "提交application.yml"
[master 1461948] 提交application.yml
 1 file changed, 15 insertions(+)
 create mode 100644 application.yml

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 375 bytes | 93.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:wl3pbzhyq/springcloud-config.git
   42e1e0e..1461948  master -> master

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$

image.png

SpringCloudConfig服务端

创建子模块

image.png
image.png
image.png

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.qing</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-config-server-3344</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
    </dependencies>

</project>

application.yml

server:
  port: 3344
spring:
  application:
    name: springcloud-config-server
  # 连接远程仓库
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/wl3pbzhyq/springcloud-config.git # 注意:连接时选择https,而不是ssh

启动类

package com.qing.springcloud;

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

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

启动测试

:::info
访问远程仓库的文件application.yml,因为spring.profiles多环境配置,所以访问时使用:application-dev.yml或application-test.yml
:::

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

image.png
image.png
image.png

SpringCloudConfig客户端

创建config-server.yml并上传到远程仓库

image.png

spring:
  profiles:
    active: dev

---
server:
  port: 8201
spring:
  profiles: dev
  application:
    name: springcloud-provider-dept

# Eureka
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/
      
---
server:
  port: 8202
spring:
  profiles: test
  application:
    name: springcloud-provider-dept

# Eureka
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git add .

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   config-client.yml


Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git commit -m "add config-client.yml"
[master c5b6fa7] add config-client.yml
 1 file changed, 31 insertions(+)
 create mode 100644 config-client.yml

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 443 bytes | 147.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:wl3pbzhyq/springcloud-config.git
   1461948..c5b6fa7  master -> master

Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$

创建客户端子模块

image.png
image.png
image.png

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.qing</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-config-client-3355</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
    </dependencies>

</project>

bootstrap.yml

image.png

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

application.yml

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

Controller

package com.qing.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.qing.springcloud;

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

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

启动测试

:::info
启动Config服务端,启动Config客户端
:::
image.png
image.png

posted @   清风(学习-踏实)  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示