SpringCloud——配置中心Config
SpringCloud——配置中心Config
SpringCloudConfig作为远程配置中心,即可以从本地读取配置文件,也可以从远程git仓库读取配置文件,甚至可以用SpringCloudBus刷新配置。
一、搭建SpringCloudConfig
(1)使用本地文件
config-server
- pom.xml
<parent> <artifactId>config-test</artifactId>
<groupId>com.calvin.config</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>config-client</artifactId>
<dependencies>
<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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- ConfigServerApplication.java
/** * <p>
* 添加@EnableConfigServer注解,开启远程配置服务
* </p>
*
* @author Calvin
* @date 2019/11/13
* @since
*/
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
- application.yml
spring: application:
name: config-server
cloud:
config:
server:
native:
search-locations: classpath:/shared #本地文件路径
profiles:
active: native
server:
port: 8050
- config-client-dev.yml
#为config-client提供的dev文件,创建在/resources/shared下server:
port: 9030
config-client
- pom.xml
<parent> <artifactId>config-test</artifactId>
<groupId>com.calvin.config</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>config-client</artifactId>
<dependencies>
<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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- bootstrap.yml
#此处使用application.yml因为spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:8050 #指定远程配置地址
fail-fast: true
profiles:
active: dev #dev环境,获取配置的时候文件名为${spring.application.name}-${spring.cloud.profiles.active}
- ConfigClientApplication.java
/** * <p>
* 简单的web项目,只拉远程配置
* </p>
*
* @author Calvin
* @date 2019/11/15
* @since
*/
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
}
- HelloController.java
/** * <p>
* 测试接口
* </p>
*
* @author Calvin
* @date 2019/11/15
* @since
*/
@RestController
public class HelloController {
@Value("${server.port}")
private String port;
@Value("${spring.application.name}")
private String applicationName;
@GetMapping("hello")
public String hello(){
return String.format("hello , this is %s, port: %s", applicationName, port);
}
}
- 测试结果
- 先启动ConfigServerApplication,再启动ConfigClientApplication
- 浏览器调用 http://localhost:9030/hello
(2)使用git远程仓库文件
- 改造config-server/application.yml
spring: application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/devilscode/cloud-practice.git
search-paths: files
default-label: config-files
server:
port: 8050
- 把config-client-dev.yml文件上传到 https://gitee.com/devilscode/cloud-practice.git 地址的config-files分支,下面创建一个目录files,将文件上传到files下。
- 然后config-server, config-client,会得到上文一样的结果
- 踩坑:关于分支配置: {spring.cloud.config.label}是不能再我使用的这个版本中起作用的,所以采用了{spring.cloud.config.server.git.default-label}
二、高可用SpringCloudConfig
1. config-server向eureka注册
- pom.xml
<!-- 增加配置 --><dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
- bootstrap.yml
spring: application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/devilscode/cloud-practice.git
search-paths: files
default-label: config-files
server:
port: 8050
#增加向eureka注册
eureka:
client:
service-url:
defaultZone: http://localhost:8010/eureka/
instance:
hostname: localhost
- ConfigServerApplication.java
/** * <p>
* 添加@EnableConfigServer注解,开启远程配置服务
* v2增加了@EnableEurekaClient表示向eureka注册中心进行注册
* </p>
*
* @author Calvin
* @date 2019/11/13
* @since
*/
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
2. config-client从eureka获取配置
- pom.xml
<!-- 增加配置 --><dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
- bootstrap.yml
spring: application:
name: config-client
cloud:
config:
fail-fast: true
#修改为向注册中心获取服务地址
discovery:
service-id: config-server
enabled: true
profiles:
active: dev
#向注册中心注册为一个服务
eureka:
client:
service-url:
defaultZone: http://localhost:8010/eureka/
instance:
hostname: localhost
- ConfigServerApplication.java
/** * <p>
* v2增加@EnableEurekaClient注解
* </p>
*
* @author Calvin
* @date 2019/11/15
* @since
*/
@EnableEurekaClient
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
}
3. 启动项目
- 启动eureka-server注册中心
- 启动config-server并且向注册中心注册成功
- 启动config-client注册并且获取配置
一定要等待config-server向eureka注册成功以后再启动config-client,否则正确获取serviceId对应的实例
4. 其他高可用配置
- 私服仓库指定密码
spring: cloud:
config:
server:
git:
uri: https://github.com/spring-cloud-samples/config-repo
#指定username和password
username: trolley
password: spanpassword
- 占位符
#支持{application}和{profile}(以及{label})的占位符spring:
cloud:
config:
server:
git:
uri: https://github.com/myorg/{application}
- 模式匹配和多个存储库
#使用pattern进行模式匹配,是一个数组spring:
cloud:
config:
server:
git:
uri: https://github.com/spring-cloud-samples/config-repo
repos:
simple: https://github.com/simple/config-repo
special:
pattern: special*/dev*,*special*/dev*
uri: https://github.com/special/config-repo
local:
pattern: local*
uri: file:/home/configsvc/config-repo
详细学习SpringCloudConfig,可以查阅官方SpringCloudConfig文档
三、总结
- 本文使用代码简单构建了SpringCloudConfig配置中心
- 介绍了本地配置和git仓库远程配置两种方式
- 介绍了周边的相关配置,并且踩坑一个
- 缺一个利用SpringCloudBus刷新配置的,这个在SpringCloudBus中一起实现
本文代码
系列地址
- 初识微服务之功能篇 微服务功能之通读
- Spring Cloud Eureka 高可用服务注册中心
- Spring Cloud Ribbon 微服务消费之负载均衡
- Spring Cloud Feign 声明式调用Java Http客户端
- Spring Cloud Hystrix 熔断器,故障解决方案
- Spring Cloud Zuul 网关监控
以上是 SpringCloud——配置中心Config 的全部内容, 来源链接: utcz.com/z/510949.html