热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springcloudconfig不重启修改配置_SpringCloud微服务架构篇7:统一配置中心Config

要做好微服务的配置管理,则需要处理好以下几个问题:在微服务架构中配置数据与服务实例不要在同一个地方,最好各自独立分开。解决非侵入式配置数据

要做好微服务的配置管理,则需要处理好以下几个问题:

  1. 在微服务架构中配置数据与服务实例不要在同一个地方,最好各自独立分开。
  2. 解决非侵入式配置数据的植入
  3. 通过对配置文件的集中式管理,可以非常方便地对微服务的配置进行统一修改和发布,并能够建立版本机制,以便后续进行配置数据的回溯。
  4. 保障配置服务的高可用性

Spring Cloud Config简介

SpringCloud Config核心就是配置中心,通过一个服务端和多个客户端实现配置服务。具有中心化、版本控制、支持动态更新和语言独立等特性,其优点:

  1. 提供配置服务器和配置客户端两种角色,便于部署和使用,使开发者可以集中管理分布式环境下的应用配置。
  2. 配置服务器集中对配置资源进行管理,并支持多种配置资源存储方式,如Git、SVN及文件系统。
  3. 通过对Git、SVN的支持,便于对配置文件进行版本管理,可以对配置文件的变更做审查。
  4. 应用通过简单的注解就可以实现配置的统一管理。
  5. Spring Cloud Config提供与Spring Boot配置类似的机制,可以非常容易地实现对应用开发环境、测试环境、灰度环境和生产环境的配置、切换和迁移等处理。
  6. 配置服务器可以方便地与Eureka和Consul等进行整合,快速构建一个高可用的配置服务。
  7. 配置服务器也可以用于其他语言开发的服务中。
95c4c6dfc8e724285cef7042d800cd0e.png

Spring Cloud Config有两个角色Server和Client。

Server作为配置中心的服务端作用:

  1. 当配置客户端获取配置时,服务端及时从Git仓库中获取配置副本,从而保证配置数据为最新。
  2. 支持从yml、json、properties等文件加载配置
  3. 配置Eureka可实现服务发现,配置Cloud Bus可实现配置推送更新
  4. 默认配置存储基于Git,从而支持配置的版本管理。

Client只需要在引导配置文件中声明所使用的配置服务器地址即可。

快速启动

1、构建配置服务器

编写pom文件

ca4ee92fdae1152dfaae11815f2fc7f5.png

编写启动类

4775afbb6940e501c8f1398f5e9c2ab1.png

编写配置文件

b4faacab9bc82290fc23a05b69819e41.png

2、创建应用配置文件

4afb615610de49d47b9745e5ea6f3ba0.png

productservice.yml

1d3b0f166a0da360995aa7e88a50e8eb.png

productservice-dev.yml

df8af145c4bdcd51c3d3560f205b9cd5.png

测试

6b887a66c645cf1c77d72dd439d5f843.png

3、升级微服务配置

对用户、商品微服务增加依赖项

f68c13245d63d1e900b22c2bdd67af57.png

增加bootstrap.yml配置,application.yml的配置全部注释掉

6c8a85371ce3903ab500f376c9063b48.png

4、启动测试

依次启动Eureka、Config、User和Producet服务。

fa9acc1f2b7e1c80c4ed77709ceb541c.png

当我们启动ProducetService时,Config相关代码将根据bootstrap.yml所配置的服务名称和所要启动的profile向配置服务器的端点请求配置数据。配置服务器在收到请求后,根据对应的参数,从配置资源库加载相应的配置文件,然后根据这些配置文件构建数据,并传给配置客户端,最后根据获得的配置数据来构建应用上下文。

5、@Value注解

验证@Value注解获取cofig配置中心的配置属性

f1cb632423658bc483a7c618ef3d3b79.png
1a2f18574d8ac1a33192c7cbde3e370d.png

6、Spring配置加载顺序

一个Spring Boot应用,可以通过多种方式进行配置。

  • 命令行参数:使用--xxx=xxx格式在启动时传递,比如--server.port=2000
  • 从java:comp/env加载的JNDI属性
  • Java系统属性:通过-Dxxx=xxx格式设置,优先级比上面的配置低。
  • 操作系统环境变量
  • RandomValuePropertySource:使用random.*属性进行配置,主要是在系统配置中需要使用随机数的地方使用,如abc.securityid=${random.value}。
  • 特定应用的properties或yml配置文件:这些文件名称的格式为application-{profile}.properties或yml,通过指定使用的profile来加载。
  • 应用配置文件application.properties或yml:默认加载的配置文件,通过上面的配置可以配属属性的覆盖。
  • @Configuration、@PropertySource或@ConfigurationProperties所指向的配置文件,@ConfigurationProperties可以批量的将配置注入到Bean中。



推荐阅读
author-avatar
55525wio
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有