Spring Cloud Config 简介什么是Srping Cloud Config?Spring Cloud Config 是一种分布式配置中心框架, 为分布式系统中的外部化配置提供服务器和客户端支持。(同类技术还有vault,zookeeper,Consul)
使用Config Server,可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象,因此它们非常适合Spring应用程序,但可以与任何语言运行的任何应用程序一起使用。当应用程序通过部署管道从开发到测试并进入生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。服务器存储后端的默认实现使用git,因此它可以轻松支持配置环境的标记版本,以及可用于管理内容的各种工具。
Spring Cloud Config也主要由两部分组成:
Config-Server: 用于配置外部的资源文件,支持对属性值进行加解密
Config-client:绑定到config server使用远程配置文件初始化spring,支持对属性值进行加解密 本文示例说明- 为了更直观的理解spring cloud config,本文通过server获取整个配置,效果上与通过配置springboot的active 来切换环境一致;通过接口查询数据库以查看效果;
- 采用高可用架构;此处使用eureka去做服务注册发现(暂时也只会这个。。)
新建ConfigServer为了减少文章长度,尽量干货,创建过程就不截说明了,建议使用Intellij idea进行创建; - <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.lc.springcloud</groupId>
- <artifactId>config-server</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>config-server</name>
- <description>Demo project for Spring Boot</description>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.1.0.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- <spring-cloud.version>Greenwich.M2</spring-cloud.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-config-server</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <repositories>
- <repository>
- <id>spring-milestones</id>
- <name>Spring Milestones</name>
- <url>https://repo.spring.io/milestone</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- </project>
复制代码- server:
- port: 8100
- spring:
- application:
- name: config-server
- cloud:
- config:
- server:
- git:
- uri: https://github.com/lvchaogit/SpringCloud
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:8081/eureka/ # 服务注册中心地址
复制代码通过配置不难理解,该配置是从git上获取配置,更多配置后续详解; - @SpringBootApplication
- @EnableConfigServer
- @EnableDiscoveryClient
- public class ConfigServerApplication {
- public static void main(String[] args) {
- SpringApplication.run(ConfigServerApplication.class, args);
- }
- }
复制代码主要是加上** @EnableConfigServer**注解,开启configserver功能 搭建 Config Client- spring:
- application:
- name: config-client
- cloud:
- config:
- profile: dev
- label: master
- discovery:
- enabled: true
- service-id: config-server
- server:
- port: 2001
- eureka:
- client:
- register-with-eureka: false #因此处只是消费,不提供服务,所以不需要向eureka server注册
- service-url:
- defaultZone: http://localhost:8081/eureka/ # 服务注册中心地址
复制代码- 首先注意配置文件名称为:bootstartp.yml,并不是~~application.yml~~
- 通过配置discovery,并设置enabled为true,使client通过服务发现去获取server,server-id为注册中心里配置的服务名称
- label=git的标签;profile=配置文件版本(类似于spring boot中的active)
|