您的位置:首页 > 编程语言 > Java开发

SpringCloud入门教学|第六篇:分布式配置中心(Spring Cloud Config)

2018-02-22 21:17 1006 查看
构建Config Server

高可用分布式

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: