SpringCloud学习-SpringCloudConfig

Posted wu6660563

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud学习-SpringCloudConfig相关的知识,希望对你有一定的参考价值。

SpringCloudConfig主要是管理分布式配置中心,当各个应用都有一大堆application.yml的时候,显得很乱,好的方式就是统一管理,对此的封装有携程的开源Apollo

定位资源的默认策略是克隆一个git仓库(在spring.cloud.config.server.git.uri
HTTP需要以下的资源:

/application/profile[/label]
/application-profile.yml
/label/application-profile.yml
/application-profile.properties
/label/application-profile.properties

如果需要Git提供远程配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

客户端使用

客户端只需要Maven或者Gradle加上org.springframework.cloud:spring-cloud-starter-config

POM.xml

<parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>1.3.5.RELEASE</version>
       <relativePath /> <!-- lookup parent from repository -->
   </parent>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>Brixton.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<build>
	<plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
	</plugins>
</build>

properties里面则配置如下:

spring.cloud.config.uri: http://myconfigserver.com

名为“configService:<远程存储库的URL> / <文件名>”的属性源包含值为“bar”的属性“foo”,是最高优先级

代码端核心启动器类需要开启Config服务@EnableConfigServer

环境库

Environment主要由三个变量参数:

  • application映射到客户端的spring.application.name
  • profile映射到客户端的spring.profiles.active
  • label表示标记

GIT后端

EnvironmentRepository默认实现是Git后端,可以在application.yml里面设置spring.cloud.config.server.git.uri,如果想要用本地配置,则可以用file:前缀进行设置

配置服务器中还有一个不使用Git的“本机”配置文件,只是从本地类路径或文件系统加载配置文件(您想要指向的任何静态URL“spring.cloud.config.server .native.searchLocations“)。要使用本机配置文件,只需使用“spring.profiles.active = native”启动Config Server
注意:如果使用file:的方式,特别是Windows的话,需要使用Linux的路径方式,如:file:///D/aaa,file:///$user.home/config-repo,默认不写是classpath路径,[classpath:/,classpath:/config,file:./]

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          repos:
            development:
              pattern:
                - */development
                - */staging
              uri: https://github.com/development/config-repo
            staging:
              pattern:
                - */qa
                - */production
              uri: https://github.com/staging/config-repo

要在远程存储HTTP身份验证,需要添加usernamepassword

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          username: trolley
          password: strongpassword

强制拉取GIT存储库

当因为某种原因改动,改的太多了,导致本地副本变脏,需要舍弃,从服务器拉取覆盖本地,可以使用force-pull

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          force-pull: true

如果有多个地方存储,则对每个uri配置force-pull即可

健康指标

运行状况可以支持自定义配置文件和自定义标签,如:

spring:
  cloud:
    config:
      server:
        health:
          repositories:
            myservice:
              label: mylabel
            myservice-dev:
              name: myservice
              profiles: development

可以通过设置spring.cloud.config.server.health.enable=false来禁用

以上是关于SpringCloud学习-SpringCloudConfig的主要内容,如果未能解决你的问题,请参考以下文章

springcloud学习02-对springcloud的理解的记录

如何学习SpringCloud?(SpringCloud模板)

SpringCloud 学习笔记总结

SpringCloud学习—— SpringCloud Stream 消息驱动

🧊SpringCloud学习

SpringCloud学习笔记1:什么是SpringCloud