Spring Cloud Config配置中心

Spring Cloud Config提供在分布式环境下统一的配置文件管理,可以将公用的配置信息放在配置中心服务,当有服务配置需要更新时,直接在配置仓库中更新配置即可,配置仓库可以用本地文件系统,svn,gitlab,github。Spring Cloud Config也可以分布式部署,防止因为一台config宕机,导致整个服务不可用。
1.创建一个spring-cloud-config服务
创建完成之后,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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-cloud-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-cloud-config</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.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>Edgware.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-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</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>

注意:创建完成之后,
Spring Cloud Config配置中心
红线标注的两处会有些区别,IDE创建的会去查找最新的版本进行创建。

spring-cloud-config作为配置服务的服务端,同时作为客户端注册到eureka注册中心。

在启动类上加上@EnableDiscoveryClient @EnableConfigServer注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class SpringCloudConfigApplication {

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

}

application.properties配置内容如下:

#服务注册名称
spring.application.name=spring-cloud-config
#服务端口,不指定,默认为8080
server.port=8888

#配置git仓库地址
#spring.cloud.config.server.git.uri=https://github.com/perfiffer/SpringcloudConfig/
#本地配置的gitlab地址,如果本地没有安装,可以用上面的github的地址作为配置文件仓库地址,注意,敏感的配置信息不要放在github上,除非建立私有的。
spring.cloud.config.server.git.uri=http://192.168.10.101/gitlab/perfiffer/SpringCloudConfigServer.git
#配置仓库路径
spring.cloud.config.server.git.search-paths=respo
#配置仓库分支
spring.cloud.config.label=master
#访问git仓库的用户名
spring.cloud.config.server.git.username=****
#访问git仓库的用户密码
spring.cloud.config.server.git.password=****

#设置以ip注册服务,不以主机名注册服务
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
#服务注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

启动spring-cloud-config服务,在eureka控制台查看服务是否注册成功。
Spring Cloud Config配置中心

访问http://localhost:8888/address-dev.properties,查看返回的信息,返回的信息为配置文件的内容。

hystrix.command.default.execution.timeout.enabled: false 
management.security.enabled: false
server.port: 8882
spring.rabbitmq.host: localhost
spring.rabbitmq.port: 5672

config的http请求地址和资源文件映射关系如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

猜你喜欢