SpringCloud Config分布式配置中心
- 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中出现大量的服务。由于每个服务都必须要相关的配置才能运行,所以一套集中式的、动态的配置管理是必不可少的。
- SpringCloud提供了 SpringCloud Config分布式配置中心 对于我们 每个微服务都有自己的 application.yml 分布式配置中心必不可少
- (推荐大家使用 ==Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。==
github地址 :https://github.com/ctripcorp/apollo
简介
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置,配置服务器为各个不同微服务应用的所有环境提供一个中心化的配置
- 分为 服务端和客户端两部分
需要我们搭配服务器 或者 github 来使用
创建 仓库
在我们的对应yml文件中增加配置
config: info: "dev"config: info: "test"config: info: "prod"
服务端
- 新建 server端微服务模块 cloud-config-server
- pom
org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
- yml文件
server: port: 3344spring: application: name: cloud-config-center #注册进Eureka服务器的微服务名 cloud: config: server: git: uri: https://github.com/angenin/springcloud-config.git #git的仓库地址 search-paths: #搜索目录 - springcloud-config label: master #读取的分支eureka: client: service-url: defaultZone: http://localhost:7001/eureka #服务注册到的eureka地址
主启动
@EnableConfigServer@SpringBootApplicationpublic class ConfigCenter { public static void main(String[] args) { SpringApplication.run(ConfigCenter.class, args); } }
客户端
- 新建微服务模块cloud-config-client
- pom
org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
- yml文件 ## bootstrap.yml(系统级别的配置文件)
server: port: 3355spring: application: name: config-client cloud: config: #config客户端配置 label: master #分支名称 name: config #配置文件名称 这三个综合:master分支上的config-dev.yml的配置文件 profile: dev #读取后缀名称 被读取到http://config-3344.com:3344/master/config/dev uri: http://localhost:3344 #配置中心地址eureka: client: service-url: defaultZone: http://localhost:7001/eureka #服务注册到的eureka地址
- 启动类
@EnableEurekaClient@SpringBootApplicationpublic class ConfigClient { public static void main(String[] args) { SpringApplication.run(ConfigClient.class, args); } }
- 新建controller 读取我们的配置文件
@RestControllerpublic class ConfigClientController { @Value("${config.info}") //spring的@Value注解 private String configInfo; @GetMapping("/configInfo") public String getConfigInfo(){ return configInfo; }}
启动 eureka 服务端 与 Config Server 与 Config client
- 测试:http://localhost:3355/configInfo -----会返回github 上的配置文件内容
动态刷新问题
- 需要在client 增加 监控
org.springframework.boot spring-boot-starter-actuator
- yml添加
#暴露监控端点management: endpoints: web: exposure: include: "*"
- 在ConfigClientController类上加上@RefreshScope注解 完美解决
个人博客: http://blog.yanxiaolong.cn/