什么是配置中心?
在微服务架构中,系统的配置信息通常分布在不同的服务中,当需要修改配置时,我们需要对每个服务进行手动修改,这样非常繁琐且容易出错。为了解决这一问题,引入配置中心可以将所有配置信息集中管理,实现配置的集中化管理和动态刷新。
Spring Cloud Config是一个用于集中管理应用程序配置的工具,它提供了一个服务器端和一个客户端库,可以将配置存储在Git等版本控制系统中,并且支持动态刷新配置。
搭建配置中心
使用Spring Cloud Config搭建配置中心需要以下几个步骤:
- 创建一个新的Spring Boot项目:
$ mkdir config-server
$ cd config-server
$ curl https://start.spring.io/starter.zip -o config-server.zip
$ unzip config-server.zip
- 修改配置文件
application.properties
:
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/your-username/your-repo
spring.cloud.config.server.git.clone-on-start=true
- 在启动类上添加
@EnableConfigServer
注解:
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
- 使用Git仓库存储配置信息:
在上述配置文件中,spring.cloud.config.server.git.uri
属性指向了一个Git仓库地址,你需要创建一个新的仓库,并将配置文件存储在仓库中。配置文件的命名规则为 应用名-环境.properties
,例如 demo-dev.properties
。
使用配置中心
使用Spring Cloud Config作为配置中心需要以下几个步骤:
- 创建一个新的Spring Boot项目:
$ mkdir config-client
$ cd config-client
$ curl https://start.spring.io/starter.zip -o config-client.zip
$ unzip config-client.zip
- 修改配置文件
bootstrap.properties
:
spring.cloud.config.uri=http://localhost:8888
spring.application.name=demo
spring.profiles.active=dev
- 在需要获取配置的类中使用
@Value
注解注入配置:
@RestController
public class ConfigController {
@Value("${foo}")
private String foo;
@RequestMapping("/config")
public String getConfig() {
return "foo: " + foo;
}
}
动态刷新配置
Spring Cloud Config支持动态刷新配置,即当配置信息更新后,客户端可以自动获取最新的配置。
为了实现动态刷新配置,你需要在客户端项目中添加 spring-boot-starter-actuator
依赖,并在配置文件中开启刷新端点。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
management.endpoints.web.exposure.include=refresh
然后,在需要刷新配置的类中添加 @RefreshScope
注解。
@RestController
@RefreshScope
public class ConfigController {
// ...
}
现在,当配置信息更新后,你可以向 /actuator/refresh
端点发送POST请求来实现配置的动态刷新。
总结
Spring Cloud Config提供了一个集中化管理应用程序配置的解决方案,它能够帮助我们集中管理配置文件,并支持动态刷新配置。通过使用Spring Cloud Config,我们可以大大简化配置的管理和更新过程,提高系统的可维护性和可扩展性。
本文来自极简博客,作者:时间的碎片,转载请注明原文链接:使用Spring Cloud Config实现配置中心