SpringCloud实战【七】:分布式配置中心-Config

目录

1 springcloud config简介

2 config配置实例

2.1 config服务端实例

2.2 config客户端实例

3 总结 


1 springcloud config简介

spring cloud config包含服务端(config server)和客户端(config client)两部分:配置文件都统一在服务端管理,可以放在Git、SVN等远程仓库上,也可以放在本地,支持的格式有yml、json、properties等,服务端配合eureka可实现服务发现,配合cloud bus可实现配置推送更新。客户端用来拉取并使用配置文件。

2 config配置实例

2.1 config服务端实例

创建项目springcloud-config-server,引入相关依赖,pom.xml配置文件如下所示:

<?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">
    <parent>
        <artifactId>springcloud-config-demo</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.springcloud</groupId>
    <artifactId>springcloud-config-server</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>
    </dependencies>
</project>

创建启动类ConfigApplication.java,引入注解@EnableConfigServer

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class, args);
    }
}

配置文件application.yml配置如下:

server:
  port: 9898
#服务名字
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          #git 仓库的地址
          uri: https://github.com/xiaoyususu/springcloud-config-file.git
          search-paths: file
          #git 仓库的账号密码
          username: username
          password: password
#加入注册中心,实现高可用
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/

uri指向配置文件所在git项目的uri。

search-paths指向配置文件所匹配的路径。

username和password是访问git仓库的用户名和密码。

配置文件springcloud-config-dev.yml如下所示:

name: boy
age: 32

启动注册中心springcloud-eureka1,springcloud-eureka2,启动配置中心server端springcloud-config-server,浏览器访问

http://localhost:9898/springcloud-config-dev.yml

得到如下所示结果:

2.2 config客户端实例

创建项目springcloud-config-client,pom.xml配置文件如下所示:

<?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">
    <parent>
        <artifactId>springcloud-config-demo</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.springcloud</groupId>
    <artifactId>springcloud-config-client</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <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>
            <version>1.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>
    </dependencies>

</project>

创建启动类ConfigClientApplication.java

@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

配置文件application.yml的配置如下所示:

spring:
  application:
    name: springcloud-config                     #指定了配置文件的应用名
  cloud:
    config:
#      uri: http://localhost:7001/    #Config server的uri
      profile: dev                          #指定的环境
      label: master                        #指定分支
      discovery:
        enabled: true                     #开启配置服务发现
        serviceId: config-server        #配置中心服务名
      fail-fast: true                        #快速失败
      retry:
        initial-interval: 1100             #首次重试间隔时间,默认1000毫秒
        multiplier: 1.1D                    #下一次重试间隔时间的乘数,比如开始1000,下一次就是1000*1.1=1100
        max-interval: 2000              #最大重试时间,默认2000
        max-attempts: 3                 #最大重试次数,默认6次

server:
  port: 9897
management:
  security:
    enabled: false     #SpringBoot 1.5.X 以上默认开通了安全认证,如果不关闭会要求权限
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/

创建ConfigClientController.java

@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;

    @RequestMapping("/test")
    public String test(){
        return this.name+this.age;
    }
}

启动配置中心client端应用springcloud-config-client,浏览器访问

http://localhost:9897/test

得到如下结果:

3 总结 

本文演示了springcloud config实现配置的基础用法,springcloud config的功能远远不止这些,感兴趣的朋友可以以本文为基础继续深挖,本文的源码下载地址:https://github.com/xiaoyususu/springcloud-config-demo.git

发布了32 篇原创文章 · 获赞 38 · 访问量 5467

猜你喜欢

转载自blog.csdn.net/u010482601/article/details/103440970