最近比较忙有日子没有更新了,今天更新springcloud 系列最后一个组件,分布式配置中心-springcloud config.
什么是分布式配置中心,他主要提供分布式应用外部化配置进行统一配置管理的作用,比如百度disconf,以及阿里的Diamond等都是比较优秀的分布式配置中心。
springcloud config默认采用git来存储配置,也可以使用svn或者本地化文件系统,这里我们使用的是git存储。
这块内容比较简单,springcloud config 分服务端和客户端,我们下面先来搭建。
maven pom 配置:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</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-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>
springboot 程序引导类加上@EnableConfigServer 注解,开启springcloud config 的服务端功能。
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
application.properties 中添加服务的基本信息以及git仓库地址信息:
spring.application.name=config-server
server.port=8087
spring.cloud.config.server.git.uri=https://gitee.com/ethan-dai/spring-cloud-demo
spring.cloud.config.server.git.search-paths=demo/config
配置释义:
spring.cloud.config.server.git.uri : 配置git仓库地址
spring.cloud.config.server.git.search-paths: 仓库路径下的相对搜索位置,可以配置多个
spring.cloud.config.server.git.username : git 仓库用户名
spring.cloud.config.server.git.password: git 仓库用户密码
这里没有配置用户名密码,因为我这里公开了仓库,这里我使用的是码云(国内git源码托管方)。
我这里配置的git 地址也就是springcloud 系列所有的demo示例地址:
https://gitee.com/ethan-dai/spring-cloud-demo
大家有需要可以到这里进行代码拉取,在仓库下面创建目录demo/config,也就是上面配置的搜索目录。
接下来启动config 服务,就可以通过curl或者浏览器来访问配置中心了。
访问方式有如下几种:
-
/{application}/{profile}[/{label}]
-
/{application}-{profile}.yml
-
/{label}/{application}-{profile}.yml
-
/{application}-{profile}.properties
-
/{label}/{application}-{profile}.properties
上面的url会映射成{application}-{profile}.propertes对应的配置文件,其中label对应git上不同的分支,默认为master分支.
我们可以访问http://localhost:8087/master/config-dev.properties,
http://localhost:8087/config-dev.properties进行测试,结果都如期返回了:
或者访问http://localhost:8087/config/dev:
config-server 会在本地仓库暂存git仓库的配置,当网络无法访问git仓库的时候会报无法从仓库获取配置,仍然会返回本地仓库的配置信息。
下面我们来创建springcloud config 的客户端应用。
maven pom 依赖:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<dependencies>
<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.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>
bootstrap.properties:
spring.application.name=config-serveer-client
server.port=8089
spring.cloud.config.name=config
spring.cloud.config.uri=http://localhost:8087
spring.cloud.config.profile=dev
spring.cloud.config.label=master
这里的配置就不解释了,几乎就是见名知道意了。
这里有个小坑,springcloud config 的配置必须配置在bootstrap.properties中,如果建在application.properties 中是无法正常启动项目的。
然后我们创建个访问配置的代码:
@RestController
@RefreshScope
public class TestController {
@Value("${config.server.name}")
private String serverName;
@GetMapping("config")
public String test() {
return serverName;
}
}
然后启动服务器,输入http://localhost:8089/config
如图我们访问到了配置中心的配置数据。到这里springcloud config 配置中心就讲解完了,这一节也比较简单,也属于springcloud 中比较简单的一个组件,而且也不是必选组件。
如有不对之处欢迎指教!