SpringCloud config 项目是一个解决分布式系统的配置管理方案
组织架构
默认情况 SVN 服务器的端口是8888
查看源代码如下: 默认端口为8888 此时的网络拓扑是这样的
Server 端和Client 端是在同一个机器上 如果不再同一个机器上则可以使用自定义的端口配置
默认情况下config server是使用git来作为配置中心的,由于还是有许多公司还是用svn来作为版本管理工具,幸好config server服务也支持svn配置,下面就来试验一下
Config-Server端要添加两个依赖的 jar 包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
新建一个config-server项目,pom文件:
[html] view plain copy
- <?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>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.5.7.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>Dalston.SR3</spring-cloud.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-config-server</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-eureka</artifactId>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.tmatesoft.svnkit/svnkit -->
- <dependency>
- <groupId>org.tmatesoft.svnkit</groupId>
- <artifactId>svnkit</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>
- </project>
config-server
这里要注意由于使用的是svn来保存配置,所以还要引入svnkit依赖,这里还引入了eureka依赖,因为我们将config-server配置成了高可用,即config-server也会作为一个服务注册到注册中心去,到时候客户端可以通过服务Id来自动发现一组config-server服务负载均衡的访问。
SpringCloud -client 配置文件中的 参数设置详解:
spring.cloud.config.uri=xxxx 一般在集群中使用
spring.cloud.config.discovery.service-id=service-id 来替代
spring.cloud.config.name=testapplication
spring.cloud.config.profile=dev
spring.application.name: 对应配置文件规则中的 {application} 部分。
• spring.cloud.config.profile: 对应配置文件规则中的 {profile} 部分。
• spring.cloud.con巨g.label: 对应配置文件规则中的 {label} 部分。
• spring.cloud.config.uri: 配置中心 config-server 的地址。
开发总结:
在一个SpringBoot工程中的resource 文件中添加两个配置文件
application.properties 和 bootstrap.propertiest 程序默认加载的是 application.properties
配置文件
SpringBoot 版本1.5.11版本
########使用SVN管理配置中心
spring.application.name=config-server
spring.profiles.active=subversion
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
#############默认情况Config的Server端的端口为8888
server.port=8888
spring.cloud.config.server.svn.uri=https://admin-pc:5678/svn/springconfig/
spring.cloud.config.server.svn.default-label=config
spring.cloud.config.server.svn.search-paths=${application}
spring.cloud.config.server.svn.username=admin
spring.cloud.config.server.svn.password=admin
pom.xml配置文件中的核心内容:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>1.8.10</version>
</dependency>
Client 端pom.xml 文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.28</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
bootstrap.properties 配置文件中的内容
spring.application.name=testapplication
spring.cloud.config.profile=test
spring.cloud.config.label=config
#spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
#spring.cloud.config.uri=http://192.168.191.4:8099
server.port=8082
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/