`
y806839048
  • 浏览: 1117224 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springcloud--config认识整理(也是用于灰度发布)

阅读更多

 

 

传统的是本程序加载配置文件到内存,采用配置中心之后,业务端为客户端,配置服务中心根据客户端的配置参数,帮客户端从git获取对应配置文件内容,返回,然后客户端将获取的配置内容放在本程序内存中,之后的用法和传统用法就一样了

 

客户端请求连上服务端发出{application}/{profile}[/{label}]参数:---》服务端匹配出地址(简单的application匹配不需要pattern,需要区分环境,版本采用pattern:这个表达式和配置服务器/{application}/{profile}[/{label}]这种匹配,一个匹配一个git库地址)--》到了git库之后有根据{application}/{profile}[/{label}]找对应名称的文件

 

 

注意:一般git修改之后客户端时拿不到最新修改的(除非重启),此时可以用命令:配置服务器:端口/refresh刷新----用此可以实现nacos的实时更新配置功能,从而config也可实现灰度发布(类似

nacos一样,直接修改zuul配置)

灰度发布的落脚点在于通过控制代理实现前端和后端服务的切换---nginx,zuul(修改的方式有abtestgateway--修改nginx配置,nacos,springcloudconfig--修改zuul配置)

 

1,启动好服务端

 

  服务端注解

@EnableConfigServer

 

  服务端配置(大致)

application.properties

server.port: 8888

spring.cloud.config.server.git.uri: file://${user.home}/config-repo

其中${user.home}/config-repo是包含YAML和属性文件的git仓库。

 

 

获取配置文件的表达方式:

curl localhost:8888/foo/development----这个请求就相当于配置文件中配好的参数或启动命令行的环境参数(程序中就不在有具体的配置文件,都存在git中,

在启动请求git的时候就加载到程序缓存中---中途git修改后不启动不会同步)

 

一般是应用名,环境名,分支名   ---在连接对应的git()后找这个git下应用名,环境名一直的文件(前面的服务是配置服务器)

配置服务器中配置有git服务地址,客户端或直接浏览器访问配置服务器+/{application}/{profile}自动可以获取配置服务器中git对应的配置文件(对应的文件为application-profile.properties)

git中的文件名也需要是applicationName等命名

 

1,没有后缀名用/---应用名/环境名/分支名   最后组成从git中需要获取的文件名称

/{application}/{profile}[/{label}]

2,有后缀名用--  分支名在最前面(有的话)

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

 

{application}映射到客户端的“spring.application.name”;

{profile}映射到客户端上的“spring.profiles.active”(逗号分隔列表);

{label}这是一个服务器端功能,标记“版本”的一组配置文件。

 

 

 

 

 

 

 

 

 

file:

 

 

 

 

 

yaml配置中有些级别的关键字是固定的,有些是可以随意写的,固定的是框架中需要对应的,随意写的是作为我们输入的变量传入框架的,

一般会是map或list方式传入

 

spring:

  cloud:

    config:

      server:

        git:

          uri: https://git/common/config-repo.git             ---默认地址  https://git/application/prifilel/label/config-repo.git  

          repos:

            team-a:                                       ---传入的临时变量部分(无意义,框架用其分类而已)

                pattern: team-a-*                         ---专门匹配:配置服务器/{application}/{profile}[/{label}]

                cloneOnStart: true

                uri: http://git/team-a/config-repo.git

force-pull: true                          ---可以在本地文件被改变时拉取  可以用file:///直接用服务端的本地文件不用git

searchPaths: foo,bar*                     ---搜索文件的目录

            team-b:

                pattern: team-b-*

                cloneOnStart: false

                uri: http://git/team-b/config-repo.git

            team-c:

                pattern: team-c-*

                uri: http://git/team-a/config-repo.git

 

示例二:

 

客户端传入的/{application}/{profile}[/{label}]和git的匹配规则

 

 

uri中label或者profile有/的用(_);https://git/application/prifilel/for(_)bar/config-repo.git  

下面的例子只有application

 

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

 

 

 

spring profiles进行不同环境版本配置分离、切换,通过spring.profiles.active=dev,mysql,如果配置文件基于文件的,服务器将优先根据{applicationName}.yml,

在根据application.yml创建一个Environment对象,如果这些yml文件中有了指定的spring profiles,那么这些profiles将有较高优先级(都会加载有profile可以覆盖纯applicationname.xml)

spring.profile.avtive是指定spring boot运行的环境,而spring.cloud.config.profile是客户端指定拉取资源库的profile配置,如果有多个profiles,最后一个起作用

 

 

 

 

注意:

 

使用基于VCS的后端(git,svn)文件被检出或克隆到本地文件系统。默认情况下,它们放在系统临时目录中,前缀为config-repo-。

在linux上,例如可以是/tmp/config-repo-<randomid>。一些操作系统会定期清除临时目录。这可能会导致意外的行为,例如缺少属性。

为避免此问题,请通过将spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir设置为不在系统临时结构中的目录来更改Config Server所使用的目录。

 

配置中心的客户端,服务端都会配置application,profile,lable服务端是默认的,客户端不传的时候用服务端的配置

 

 

2,客户端使用

 

   客户端加载后属性在容器中,可以直接用@value或者占位符获取

  

 

1,添加依赖

 

 

2,开启注解

 

3,客户端配置(大致)

 远程加载的配置文件优先于本地的配置文件--活动配置文件优先于默认配置,如果存在多个配置文件,则最后一个配置文件

 

   spring:

  application:

    name: foo

  profiles:

    active: dev,mysql

 

 

 

 

 

 

参考:

https://www.cnblogs.com/shamo89/p/8016908.html   

 

https://www.cnblogs.com/huangjuncong/p/9069749.html  

 

 

分享到:
评论

相关推荐

    spring-cloud-starter-alibaba-nacos-config-2021.1-API文档-中文版.zip

    赠送jar包:spring-cloud-starter-alibaba-nacos-config-2021.1.jar; 赠送原API文档:spring-cloud-starter-alibaba-nacos-config-2021.1-javadoc.jar; 赠送源代码:spring-cloud-starter-alibaba-nacos-config-...

    spring-cloud-starter-alibaba-nacos-config-2.1.0.RELEASE.jar

    spring-cloud-starter-alibaba-nacos-config-2.1.0.RELEASE.jar

    spring-cloud-starter-alibaba-nacos-config-2021.1-API文档-中英对照版.zip

    赠送jar包:spring-cloud-starter-alibaba-nacos-config-2021.1.jar; 赠送原API文档:spring-cloud-starter-alibaba-nacos-config-2021.1-javadoc.jar; 赠送源代码:spring-cloud-starter-alibaba-nacos-config-...

    spring-cloud-examples

    spring-cloud-config-svn-refresh:配置中心svn版本示例,客户端refresh版本示例 spring-cloud-config-eureka:配置中心服务化和高可用代码示例 spring-cloud-config-eureka-bus:配置中心和消息总线示例(配置中心...

    spring-cloud-config + spring-cloud-bus-amqp实现分布式集群配置动态更新

    首先,我们创建一个`config-repo`目录,它将作为Spring Cloud Config Server的配置仓库。在这个仓库中,我们可以为每个微服务创建独立的配置文件,例如`application.properties`或`application.yml`,并将这些文件...

    springcloud-app-parent是一个SpringCloud的练习实践项目

    【SpringCloud】springcloud-app-parent是一个SpringCloud的练习实践项目,集成了nacos,eureka, feign,springcloud-gateway,springcloud-config,rabbitmq,ka... (Springcloud app parent is a SpringCloud practice ...

    spring-cloud-starter-alibaba-nacos-discovery-2.2.0.RELEASE.jar

    spring-cloud-starter-alibaba-nacos-discovery-2.2.0.RELEASE

    spring-cloud使用的各种示例

    - [spring-cloud-config-svn-refresh](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-svn-refresh):配置中心svn版本示例,客户端refresh版本示例 - [spring-cloud-config-...

    springcloud-learning-master.zip springcloud学习合集

    学习SpringCloud需要对Java、SpringBoot有基础的了解,同时也需要理解微服务架构的核心思想。通过这个合集,你可以从零开始,逐步构建自己的微服务应用。在实践中不断摸索和优化,你将能够熟练掌握SpringCloud,从而...

    spring-security-config-5.0.7.RELEASE-API文档-中文版.zip

    赠送jar包:spring-security-config-5.0.7.RELEASE.jar; 赠送原API文档:spring-security-config-5.0.7.RELEASE-javadoc.jar; 赠送源代码:spring-security-config-5.0.7.RELEASE-sources.jar; 赠送Maven依赖信息...

    SpringCloud Config Demo编写

    1.Spring Cloud Config 用于为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,分为服务端和客户端。 2.服务端为分布式配置中心,是一个独立的微服务应用;客户端为分布式系统中的基础设置或微服务...

    springcloud-demo

    《SpringCloud实战:基于"springcloud-demo"的深度解析》 在现代的微服务架构中,Spring Cloud以其强大的服务治理能力,成为了Java开发者构建分布式系统的重要工具。本篇文章将深入探讨"springcloud-demo"项目,...

    spring-cloud-netflix-hystrix应用

    7. **配置管理**:Hystrix的配置可通过Spring Cloud Config进行集中管理,方便在运行时动态调整熔断器的阈值、超时时间等参数,适应不断变化的业务需求。 在实践中,Spring Cloud Netflix Hystrix的使用通常包含...

    SpringCloud项目实战各组件源代码案例

    包含内容: Spring Cloud系列教程 Spring Boot Spring Cloud Stream...springcloud-config-oracle-bus-kafka.zipspringcloud-feign.zip springcloud-producer.zip springcloud-producer-consumer.zip springcloudstudy.

    spring-cloud-examples-master

    《Spring Cloud实战详解:基于spring-cloud-examples-master的深度解析》 在当今的软件开发领域,微服务架构已经成为主流趋势,而Spring Cloud作为Java生态中的微服务治理框架,深受开发者们的喜爱。本篇文章将深入...

    springcloud-ribbon-feign-hystrix-zuul-config

    在Spring Cloud框架中,"springcloud-ribbon-feign-hystrix-zuul-config"这个标题涉及到四个关键组件:Ribbon、Feign、Hystrix和Zuul,以及配置管理Config。这些组件都是构建分布式系统时常用的服务发现、客户端负载...

    SpringCloud统一配置中心-jilinwula-springcloud-config.zip

    在"jilinwula-springcloud-config-master"这个目录下,通常会包含Config Server和Config Client的示例代码,可能有Spring Boot的启动类、配置文件(application.properties或.yml)、以及必要的依赖。通过这些代码,...

    spring-security-config-5.5.2-API文档-中文版.zip

    赠送jar包:spring-security-config-5.5.2.jar; 赠送原API文档:spring-security-config-5.5.2-javadoc.jar; 赠送源代码:spring-security-config-5.5.2-sources.jar; 赠送Maven依赖信息文件:spring-security-...

    spring-boot-config-yaml.jar

    spring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot...

    springcloud-learning-master.zip

    《Spring Boot + Spring Cloud 全面学习指南》 在当今的微服务架构中,Spring Boot 和 Spring Cloud 是两个至关重要的技术。Spring Boot 提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方式,而...

Global site tag (gtag.js) - Google Analytics