SpringCloud入门教学|第六篇:分布式配置中心(Spring Cloud Config)
2018-02-22 21:17
1006 查看
构建Config Server
高可用分布式
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。很容易添加替代实现,并使用Spring配置将其插入。
在程序入口的Application类上增加
配置文件进行如下配置:
参数说明:
spring.cloud.config.server.git.uri: 配置git仓库地址
spring.cloud.config.server.git.search-paths: 配置仓库路径
spring.cloud.config.label:配置仓库的分支
spring.cloud.config.server.git.username: 访问git仓库的用户名
spring.cloud.config.server.git.password: 访问git仓库的用户密码
如果Git仓库为公开仓库,可以不填写用户账号和密码。
这样我们就可以使用远程仓库的配置文件了。
http请求地址和映射文件映射如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
那么我们就去读取远程仓库上面的配置文件,编写一个API接口
实例源码:
https://github.com/houshuai0816/SpringCloudDemo
那么我们 可以使用的时候直接设置相关的配置文件
高可用分布式
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。很容易添加替代实现,并使用Spring配置将其插入。
构建Config Server
创建一个config-server的module ,并且进行增加spring-cloud-config-server依赖
<?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.example</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> <!-- 指定父pom --> <parent> <groupId>com.example</groupId> <artifactId>springcloud</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <kotlin.version>1.2.20</kotlin.version> <spring-cloud.version>Edgware.SR2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </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> <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory> <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <configuration> <args> <arg>-Xjsr305=strict</arg> </args> <compilerPlugins> <plugin>spring</plugin> </compilerPlugins> <jvmTarget>1.8</jvmTarget> </configuration> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>test-compile</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-allopen</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
在程序入口的Application类上增加
@EnableConfigServer来开启云端配置服务器的功能。
@EnableConfigServer @SpringBootApplication class ConfigServerApplication fun main(args: Array<String>) { SpringApplication.run(ConfigServerApplication::class.java, *args) }
配置文件进行如下配置:
spring.application.name=config-server server.port=8888 spring.cloud.config.server.git.uri=https://github.com/houshuai0816/Springcloud-Config/ # 地址 spring.cloud.config.server.git.search-paths=respo # 目录搜索 spring.cloud.config.label=master spring.cloud.config.server.git.username= 你的账号 spring.cloud.config.server.git.password= 你的密码
参数说明:
spring.cloud.config.server.git.uri: 配置git仓库地址
spring.cloud.config.server.git.search-paths: 配置仓库路径
spring.cloud.config.label:配置仓库的分支
spring.cloud.config.server.git.username: 访问git仓库的用户名
spring.cloud.config.server.git.password: 访问git仓库的用户密码
如果Git仓库为公开仓库,可以不填写用户账号和密码。
这样我们就可以使用远程仓库的配置文件了。
http请求地址和映射文件映射如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
那么我们就去读取远程仓库上面的配置文件,编写一个API接口
@RestController class ConfigServerController { @Value("\${hello}") private lateinit var hello:String @RequestMapping("/hi") fun hi(): String { return hello } }
实例源码:
https://github.com/houshuai0816/SpringCloudDemo
高可用分布式
如果不像在使用配置文件时候都用URL进行指定,则可以采用 Eureka设置一个client 依赖Config Server 进行配置为注册服务器(这里比如服务器名字叫 Config-Server)那么我们 可以使用的时候直接设置相关的配置文件
spring.application.name=config-client spring.cloud.config.label=master spring.cloud.config.profile=dev eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/ spring.cloud.config.discovery.enabled=true spring.cloud.config.discovery.serviceId=config-server server.port=8881
相关文章推荐
- Spring Cloud config之一:分布式配置中心入门介绍
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- SpringCloud入门6:分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- SpringCloud入门7:高可用的分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)