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

spring cloud系列-02.配置中心Config搭建

2017-12-20 14:31 531 查看
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。

参考:spring cloud config 中文文档地址

本文主要讲述config工程搭建过程,使用的gitlab作为配置服务器。当然你也可以选择本地文件系统或者SNV来作为你配置中心的配置管理服务器。

下面是整个搭建过程和一些主要说明,如有错误欢迎指正。

1.pom文件

<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.xxxx</groupId>
<artifactId>spring-config</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Dalston.SR1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<!-- spring boot基本环境 -->
<dependencies>
<!--服务配置所需环境 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--服务注册所需环境 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- 添加monitor监控(可忽略) -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

</project>


2.application.properties配置文件

server.port=8888
spring.application.name=config-server

######################注册服务######################
eureka.instance.hostname=config-server
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/
eureka.instance.prefer-ip-address=true

#######################本地配置中心
#spring.profiles.active=native
#spring.cloud.config.server.native.searchLocations=file:F:\\springcloud\\config
#spring.cloud.config.profile=dev

######################远程配置中心######################
#config工程所在gitlab地址
spring.cloud.config.server.git.uri=http://192.168.1.88:10080/spring-config.git
#配置文件所处的位置,config表示在工程根目录的config目录下找配置文件
spring.cloud.config.server.git.searchPaths=config
#分支名称,会拉取spring-config工程的master分支中的配置和代码
spring.cloud.config.label=master
#可以理解为后缀,和注册中心的spring.application.name+该后缀+.properties获取该服务的相应配置文件
#如在注册中心注册了个名为【kafka-server】的服务,则kafka-server启动时则会去config文件夹下load
#名为【kafka-server-dev.properties】的配置文件
spring.cloud.config.profile=dev
#gitlab服务器的登录用户名和密码
spring.cloud.config.server.git.username=root
spring.cloud.config.server.git.password=root

# 开启消息跟踪(可忽略)
spring.cloud.bus.trace.enabled=true
spring.cloud.bus.refresh.enabled=true
management.security.enabled=false
# 注册中心中的服务说明(可忽略)
info.app.name="@project.name@"
info.app.description="config-server for project"
info.app.version="@project.version@"
info.app.spring-boot-version="@project.parent.version@"


3.spring cloud 启动类

package com.spring.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

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


注解说明

@EnableEurekaClient:

开启注册中心客户端,配合application.properties中的【注册服务】配置块可将服务注册到注册中心

@SpringBootApplication:

springboot启动类注解

@EnableConfigServer:

我是config server,这个比较好理解了。

到此为止config搭建完毕,整个工程的目录结构如下:

spring-config
|--src/main/java
|  |-- com.spring.config
|  |   |-- ConfigServerApplication.java
|--src/main/resources
|  |--application.proerties
|--config
|  |--kafka-server-dev.proerties
|--pom.xml


启动注册中心和config服务,在注册中心应该可以看到config-server的服务了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息