docs/Spring全家桶/SpringCloud/SpringCloudConfig.md
ڷֲʽϵͳУзж벻ļ֧֣Щļͨɸй properties yml ʽڸ·£ application.properties application.yml ȡ
ֽļɢڸеĹʽ⣺
Ϊ˽Щ⣬ͨǶʹĶýͳһϿԴкܶ࣬ٶȵ DisconfԱ diamond360 QConfЯ̵ Apollo ȶǽġSpring Cloud ҲԼķֲʽģǾ Spring Cloud Config
Spring Cloud Config Spring Cloud ŶӿĿΪܹиṩлⲿ֧֡
˵ǣSpring Cloud Config Խļд洢һⲿĴ洢ֿϵͳ Git SVN ȣУõͳһָ֧С Spring Cloud Config ֣
Spring Cloud Config Ĭʹ Git 洢Ϣʹ Spirng Cloud Config ÷Ȼֶ֧õİ汾ǿʹ Git ͻ˹߷ضݽйͷʡ Git ⣬Spring Cloud Config ṩ˶洢ʽ֧֣ SVNػļϵͳȡ
Spring Cloud Config ԭͼ
ͼ1Spring Cloud Config ԭ
Spring Cloud Config £
Spring Cloud Config ص㣺
Ǿͨʵʾ Spring Cloud Config ʹá
1. Github ϴһΪ springcloud-config IJֿ⣨Repositoryȡòֿĵַ Github վڹû˵ȶܴܿڼػ⣬ǿִиò
2. ڸ spring-cloud-demo2 £һΪ micro-service-cloud-config-center-3344 Spring Boot ģ飬 pom.xml Spring Cloud Config ¡
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-demo2</artifactId>
<groupId>net.biancheng.c</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>net.biancheng.c</groupId>
<artifactId>micro-service-cloud-config-center-3344</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>micro-service-cloud-config-center-3344</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. micro-service-cloud-config-center-3344 ·/resources Ŀ¼£һΪ application.yml ļ¡
server:
port: 3344 #˿ں
spring:
application:
name: spring-cloud-config-center #
cloud:
config:
server:
git:
# Git ַhttps://gitee.com/java-mohan/springcloud-config.git
# ƣgiteeַ uri: https://github.com/javmohan/springcloud-config.git (github վʽʹ gitee)
uri: https://gitee.com/java-mohan/springcloud-config.git
#ֿ
search-paths:
- springcloud-config
force-pull: true
# GitֿΪֿ⣬Բдû룬˽вֿҪд
# username: ********
# password: ********
#֧
label: master
eureka:
client: #ͻעᵽ eureka б
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #עᵽ Eureka Ⱥ
4. micro-service-cloud-config-center-3344 ϣʹ @EnableConfigServer ע Spring Cloud Config Ĺܣ¡
package net.biancheng.c;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class MicroServiceCloudConfigCenter3344Application {
public static void main(String[] args) {
SpringApplication.run(MicroServiceCloudConfigCenter3344Application.class, args);
}
}
5. ½һΪ config-dev.yml ļϴ springcloud-config ֿ master ֧£config-dev.yml ¡
config:
info: c.biancheng.net
version: 1.0
6. עģȺ micro-service-cloud-config-center-3344ʹʡhttp://localhost:3344/master/config-dev.ymlͼ
ͼ2ļ
Spring Cloud Config 涨һļʹ±
| ʹ | ʾ |
|---|---|
| /{application}/{profile}[/{label}] | /config/dev/master |
| /{application}-{profile}.{suffix} | /config-dev.yml |
| /{label}/{application}-{profile}.{suffix} | /master/config-dev.yml |
ʹڸ˵¡
ͨϾֱӶļзʡ
7. Ϸʡhttp://localhost:3344/config-dev.ymlͼ
ͼ3Spring Cloud Config ļ
8. Ϸʡhttp://localhost:3344/config/dev/master¡
{"name":"config","profiles":["dev"],"label":"master","version":"9caafcc3498e04147463482f8b29e925e8afcc3a","state":null,"propertySources":[{"name":"https://gitee.com/java-mohan/springcloud-config.git/config-dev.yml","source":{"config.info":"c.biancheng.net","config.version":1.0}}]}
ԴǾ˶ Spring Cloud Config ˵ĴͲԡ
1. ڸ spring-cloud-demo2 £һΪ micro-service-cloud-config-client-3355 Spring Boot ģ飬 pom.xml Spring Cloud Config ͻ˵¡
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-cloud-demo2</artifactId>
<groupId>net.biancheng.c</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>net.biancheng.c</groupId>
<artifactId>micro-service-cloud-config-client-3355</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>micro-service-cloud-config-client-3355</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</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>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Spring Cloud Config ͻ-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2. micro-service-cloud-config-client-3355 ·/resources Ŀ¼£һΪ bootstrap.yml ļ¡
#bootstrap.yml ϵͳģȼ application.yml ⲿò
server:
port: 3355 #˿ں
spring:
application:
name: spring-cloud-config-client #
cloud:
config:
label: master #֧
name: config #ļƣconfig-dev.yml е config
profile: dev # config-dev.yml е dev
#ﲻҪ http:// ȡ
uri: http://localhost:3344 #Spring Cloud Config ˣģַ
eureka:
client: #ͻעᵽ eureka б
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #עᵽ Eureka Ⱥ
3. net.biancheng.c.controller £һΪ ConfigClientController ࣬ͨȡļеã¡
package net.biancheng.c.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//ȡָļݣչʾҳ
@RestController
public class ConfigClientController {
@Value("${server.port}")
private String serverPort;
@Value("${config.info}")
private String configInfo;
@Value("${config.version}")
private String configVersion;
@GetMapping(value = "/getConfig")
public String getConfig() {
return "info" + configInfo + "
version" + configVersion + "
port" + serverPort;
}
}
4. micro-service-cloud-config-client-3355 ϣʹ @EnableEurekaClient ע Eureka ͻ˹ܣ¡
package net.biancheng.c;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class MicroServiceCloudConfigClient3355Application {
public static void main(String[] args) {
SpringApplication.run(MicroServiceCloudConfigClient3355Application.class, args);
}
}
5. micro-service-cloud-config-client-3355ʹʡhttp://localhost:3355/getConfig,ͼ
ͼ4Spring Cloud Config ͻ˻ȡϢ
6. ļ config-dev.yml config.version ֵΪ 2.0¡
config:
info: c.biancheng.net
version: 2.0
7. Eureka עģȺ micro-service-cloud-config-center-3344 ʹʡhttp://localhost:3344/master/config-dev.ymlͼ
ͼ5Ļȡĺļ
ͼ 6 ԿѾɹػȡĺá
8. ٴηʡhttp://localhost:3355/getConfigͨ Spring Cloud Config ͻ˻ȡĺϢͼ
ͼ6Spring Cloud Config ͻ˻ȡĺϢ
9. micro-service-cloud-config-client-3355ٴʹ÷ʡhttp://localhost:3355/getConfigͼ
ͼ7 Spring Cloud Config ͻ˻ȡ
ͨʵǿԵõ 2 ۣ
Ϊ˽ Config ͻȡõ⣬ǾͶ micro-service-cloud-config-client-3355 и죬첽¡
1. micro-service-cloud-config-client-3355 pom.xml Spring Boot actuator ģ顣
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. ļ bootstrap.yml ãⱩ¶ Spring Boot actuator ļؽڵ㡣
# Spring Boot 2.50 actuator ˴Ľڵ㣬ֻ¶ health ڵ㣬ã*Ϊ˿еĽڵ
management:
endpoints:
web:
exposure:
include: "*" # * yaml ļڹؼ֣Ҫ
3. ConfigClientController ʹ @RefreshScope עˢ£¡
package net.biancheng.c.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
// ȡָļݣչʾҳ
@RefreshScope //Ϊöֶ̬Ļȡµgit ã actuator ؼ RefreshScope
@RestController
public class ConfigClientController {
@Value("${server.port}")
private String serverPort;
@Value("${config.info}")
private String configInfo;
@Value("${config.version}")
private String configVersion;
@GetMapping(value = "/getConfig")
public String getConfig() {
return "info" + configInfo + "
version" + configVersion + "
port" + serverPort;
}
}
4. micro-service-cloud-config-client-3355Ȼļ config-dev.yml е config.version Ϊ 3.0¡
config:
info: c.biancheng.net
version: 3.0
5. ʹٴηʡhttp://localhost:3355/getConfigͼ
ͼ8 Spring Cloud Config ͻ˺ȡ
ͼ 9 ԿʹǶ Spring Cloud Config ͻ˽˸죬ҲȻֱӻȡá
6. дڣʹһ POST ˢ Spring Cloud Config 3355 ͻˣ֪ͨͻļѾģҪȥá
curl -X POST "http://localhost:3355/actuator/refresh"
ͼ9ֶˢ¿ͻ
ʵУͨ Config ͻˣ˿ںţ3355 Spring Boot actuator õı仯ʹǿڲ Config ͻ˵»ȡãԭͼ
ͼ10Spring Cloud Congfig ֶˢ
ַʽȻ Config ͻ˲ܻȡõ⣬һȴҲǾֻҪòֿе÷ı䣬Ҫǰ Config ͻֶ POST ֪ͨȡá
֪ν Config ͻʵһһķܹУһϵͳʮʮΪijһļĶʮ POST ȻDzġ
ôûСһ֪ͨЧķʽأǿ϶ġSpring Cloud Config Bus ͿʵõĶ̬ˢ¡
Spring Cloud Bus ֱΪϢߣܹͨϢ RabbitMQKafka ȣܹеĸʵֹ㲥״̬ġ¼͵ȹܣʵ֮ͨŹܡ
Ŀǰ Spring Cloud Bus ֧ϢRabbitMQ Kafka
Spring Cloud Bus ʹһϢһϢ TopicĬΪspringCloudBus Topic еϢᱻзʵѡеһˢʱSpring Cloud Bus Ϣ浽 Topic У Topic ķյϢԶѡ
Spring Cloud Bus ƿʵֺܶܣ Spring Cloud Config ʵõĶ̬ˢ¾͵Ӧó֮һ
Git ֿе÷˸ı䣬ֻҪijһȿ Config ˣҲ Config ͻˣһ POST Spring Cloud Bus ͿͨϢ֪ͨȡãʵõĶ̬ˢ¡
Spring Cloud Bus ̬ˢõĹԭͼʾ
ͼ11Bus+Config ʵõĶ̬ˢ
ͼ 12 Spring Cloud Bus ʵõĶ̬ˢҪ²:
RabbitMQ Ϊʾʹ Config+Bus ʵõĶ̬ˢ¡
1. micro-service-cloud-config-center-3344 pom.xml У Spring Boot actuator ģ Spring Cloud Bus ¡
<!--ϢߣBus RabbitMQ ֧-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--Spring Boot actuator ģ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. micro-service-cloud-config-center-3344 ļ application.yml У RabbitMQ Spring Boot actuator ã¡
##### RabbitMQ ã15672 web Ķ˿ڣ5672 MQ ķʶ˿###########
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
# Spring Boot 2.50 actuator ˴Ľڵ㣬ֻ¶ heath ڵ㣬ã*Ϊ˿еĽڵ
management:
endpoints:
web:
exposure:
include: 'bus-refresh'
3. micro-service-cloud-config-client-3355 pom.xml У Spring Cloud Bus ¡
1. <!--ϢߣBus RabbitMQ ֧-->
2. <dependency>
3. <groupId>org.springframework.cloud</groupId>
4. spring-cloud-starter-bus-amqp
5. </dependency>
<!--ϢߣBus RabbitMQ ֧-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
5. micro-service-cloud-config-client-3355½һΪ micro-service-cloud-config-client-bus-3366 Spring Boot ģ飨˿ںΪ 3366ļ bootstrap.yml á
#bootstrap.yml ϵͳģȼ application.yml ⲿò
server:
port: 3366 #˿ںΪ 3366
spring:
application:
name: spring-cloud-config-client-bus
cloud:
config:
label: master #֧
name: config #ļƣconfig-dev.yml е config
profile: dev #ļĺ config-dev.yml е dev
#ﲻҪ http:// ȡ
uri: http://localhost:3344 #spring cloud ĵַ
##### RabbitMQ ã15672 web Ķ˿ڣ5672 MQ ķʶ˿###########
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
###################### eureka ####################
eureka:
client: #ͻעᵽ eureka б
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #עᵽ Eureka Ⱥ
# Spring Boot 2.50 actuator ˴Ľڵ㣬ֻ¶ heath ڵ㣬ã*Ϊ˿еĽڵ
management:
endpoints:
web:
exposure:
include: "*" # * yaml ļڹؼ֣Ҫ
6. micro-service-cloud-config-center-3344micro-service-cloud-config-client-3355ʹʡhttp://localhost:3355/getConfigͼ
ͼ12Spring Cloud Bus ̬ˢ
7. micro-service-cloud-config-client-bus-3366ʹʡhttp://localhost:3366/getConfigͼ
ͼ13Spring Cloud Bus ̬ˢ
config:
info: c.biancheng.net
version: 4.0
9. дڣʹ micro-service-cloud-config-center-3344Config Serverһ POST ˢá
curl -X POST "http://localhost:3344/actuator/bus-refresh"
ͼ14Spring Cloud Bus ̬ˢ
ͼ15Spring Cloud Bus ̬ˢ
ע⣺ʹ Spring Cloud Bus ʱ뱣֤ Bus ӵϢ RabbitMQѾȷװ
ν֪ͨDz֪ͨе Config ͻˣǸֻ֪ͨijһ Config ͻˡ
ʹ Spring Cloud Bus ʵֶ֪ͨķʮֻּҪڷ POST ʱʹ¸ʽɡ
http://{hostname}:{port}/actuator/bus-refresh/{destination}
˵£
Ǿͨһʵʾ Spring Cloud Bus ̬ˢµĶ֪ͨ
1. ļ config-dev.yml е config.version Ϊ 5.0¡
config:
info: c.biancheng.net
version: 5.0
2. дڣʹ micro-service-cloud-config-center-3344 һ POST
curl -X POST "http://localhost:3344/actuator/bus-refresh/spring-cloud-config-client:3355"
3. ʹʡhttp://localhost:3355/getConfigͼ
ͼ16Spring Cloud Bus ֪ͨ
4. ʹٴηʡhttp://localhost:3366/getConfigͼ
ͼ17Spring Cloud Bus ֪ͨ
https://lijunyi.xyz/docs/SpringCloud/SpringCloud.html#_2-2-x-%E5%88%86%E6%94%AF https://mp.weixin.qq.com/s/2jeovmj77O9Ux96v3A0NtA https://juejin.cn/post/6931922457741770760 https://github.com/D2C-Cai/herring http://c.biancheng.net/springcloud https://github.com/macrozheng/springcloud-learning