## Spring Cloud Config
简单介绍一下如何使用SpringCloud搭建配置管理。
搭建配置管理会用到Spring Cloud Config,该项目是Spring Cloud的子项目之一。简单介绍一下 Spring Cloud Config:
Spring Cloud Config 项目
- 提供服务端和客户端支持
- 集中式管理分布式环境下的应用配置
- 基于Spring环境,无缝与Spring应用集成
- 可用于任何语言开发的程序
- 默认实现基于git仓库,可以进行版本管理
- 可替换 自定义实现
Spring Cloud Config Server 作为配置中心服务端
- 拉取配置时更新git仓库副本,保证是最新结果
- 支持数据结构丰富,yml,json,properties等
- 配合eureke可实现服务发现,配合cloud bus可实现配置推送更新
- 配置存储基于git仓库,可进行版本管理
- 简单可靠,有丰富的配套方案
Spring Cloud Config Client 默认客户端实现
- SpringBoot项目不需要改动任何代码,加入一个启动配置文件指明使用ConfigServer上哪个配置文件即可。
简单实例:
1.添加依赖
新建一个SpringBoot项目,在pom.xml中加入 spring-cloud-config:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2.开启config server
在入口类上加上@EnableConfigServer注解即可开启config server
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServiceApplication.class, args);
}
}
3.application.yml中配置服务信息以及git信息,例如:
spring:
application:
name: config-service #项目名
cloud:
config:
server:
git:
uri: https://.../demo-config.git #配置git仓库位置
username: #访问git仓库的用户名
password: #访问git仓库的密码
4.验证
此时项目的服务配置都集中在git仓库中,此时项目启动时需要从git仓库中拉去代码,此时项目角色为客户端。
此时项目的配置如下:
bootstrap.yml
spring:
profiles:
active: ${SPRING_PROFILES_ACTIVE:dev} #对应{profile}部分
application:
name: auth-server #对应{application}部分
cloud:
config:
enabled: true
discovery: #服务发现,从服务注册中心获取服务信息
enabled: true
service-id: CONFIG-SERVICE #指定配置中心的service-id,便于扩展为高可用配置集群。
特别注意:
- 配置中心的地址一定要放在bootstrap.yml,这个配置文件是由“根”上下文优先加载,可以保证程序启动之初就感知到远程配置中心的存在,并从远程获取配置,随后继续启动系统,这点十分重要。
- application.yml,加载顺序低于前者,如果配置中心地址放在这里,并且你远程配置了一些启动相关的必要参数,那么,你的程序很可能由于缺少参数而启动失败。
在微服务架构中,就要实现高可用的服务,配置中心也是如此,所以我们需要将配置中心也注册在注册中心中,这样客户端就同样可以以服务的访问方式来获取配置信息。