SpringCloud--Day5
1. 配置Microserver Config
- 生成项目,添加config服务端和微服务
2.统一配置中心,现在GitHub上建议仓库
3.创建统一配置中心服务端
配置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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud</groupId>
<artifactId>config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>config</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
//统一配置中心服务端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
//本身也是一个微服务
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
server.port=8082
spring.application.name=config
eureka.client.service-url.defaultZone=http://peer1:8791/eureka/,http://peer2:8792/eureka/,http://peer3:8793/eureka/
#配置GitHub地址 用户和密码 通过以下方式在GitHub上面拉取配置
#http://localhost:8082/order-b.properties 根据日志查看查询方式
#/{name}-{profiles}.yml
#/{name}/{profiles}/{label:.*}
#name服务名 profiles环境 label分支 默认master分支
#http://localhost:8082/order-dev.properties
spring.cloud.config.server.git.uri=https://github.com/xuweizhia/config-repo.git
[email protected]
spring.cloud.config.server.git.password=158262751sb.
#储存拉取下来的配置文件
spring.cloud.config.server.git.basedir=D://BaseDirs
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer//开启统一配置中心
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
4.统一配置中心客户端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
5.以application.properties命名的文件,因为把配置文件拉取下来,SpringCloud无法辨别文件加载顺序,所以bootstrap文件作为初始加载文件,需要写出注册中心的地址。
6.如果GitHub上面有三个文件order.yml,order-dev.yml,order-test.yml
客户端拉取配置拉取文件,会把order.yml中配置与拉取的配置合并,所以order为节点的配置文件,把通用配置写入其中。
7.自动刷新配置,线上刷新配置文件,SpringCloudBus自动刷新配置。
config-server会从git拉取配置,在本地存一份配置文件,其他客户端从同一配置中心获取配置文件,组件Bus有通知机制,自动刷新配置。
8.配置刷新文件
#暴露消息队列服务接口
#发送http://localhost:8082/actuator/bus-refresh请求会发送刷新请求
management.endpoints.web.exposure.include=*
//检验是否从配置中心获取到Config
@RestController
//配置消息刷新消息队列通知
@RefreshScope
public class EVNController {
@Value("${EVN}")
private String EVN;
@GetMapping("/evn")
public String getEVN(){
return EVN;
}
}
9.从配置文件获取数据
10.实现自动更新配置,配置拉取请求
本地拉取git请求方式