搭建spring cloud config

时间:2022-09-24 18:30:08

很久没更新了,因为不是专职研究spring cloud,因此更新速度得看工作强度大不大,每天能抽出的时间不多,如果更新太慢了,并且有小伙伴看的话,请见谅了。

Spring Cloud简介

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。

Spring Cloud Config 配置管理组件

不知道spring cloud之前,本来想自己开发一个配置管理服务器。后来了解到spring cloud,接触到spring cloud config,知道其作为配置管理,可以使用git、svn和本地文件读取的三种方式,结合我们正在使用的git非常好,天生具备了配置修改日志记录、回滚和适合给运维工程师使用的特点。于是果断学习spring cloud config用来作为我们的配置管理服务器。

其优点:1. 能够记录配置文件的change log

    2. 能够快速回滚

    3. 修改配置后可通知配置使用端更新配置

    4. 如果是使用内置tomcat,重启tomcat也是可行的

    5. 搭建服务简单快捷

下面简单介绍下如何快速搭建配置服务:

首先是启动类:加上@EnableConfigServer注解

@SpringBootApplication
@EnableConfigServer
public class CloudServerDemoApplication { public static void main(String[] args) {
SpringApplication.run(CloudServerDemoApplication.class, args);
}
}

其次是pom文件的引入:

<?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>your.groupId</groupId>
<artifactId>your.artifactId</artifactId>
<version>your.version</version>
<packaging>war</packaging> <name>cloud-server-demo</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.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>
<tomcat.version>8.5.5</tomcat.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-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR2</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>

  注意点:1. 如果想使用内置tomcat启动,我当前使用的boot版本为1.4.2,其内置tomcat版本为8.5.6, 8.5.6的tomcat有bug,因此要改为8.5.5.

      2. 如果想调用/refresh等接口接口,需要引入spring-boot-starter-actuator依赖。如果报404,请先确定是用post请求。

application.properties文件

讲配置之前先说明下git中文件名和git分支对应请求路径

HTTP服务资源的构成:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

application是SpringApplicationspring.config.name,(一般来说'application'是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为"master")。这几项值都对应了配置服务消费工程中的配置,后面的文章会讲。

配置服务中最基本的一项配置为指定git:

第一种:(最基础的,指定之后可以使用最简单的配置服务了)

spring.cloud.config.server.git.uri

在正常环境中,配置服务给多个项目提供服务,git中都放一起就会很乱,配置服务提供了几种区分各个项目的配置:

第二种:

spring.cloud.config.server.git.uri: https://github.com/spring-cloud-samples/config-repo
spring.cloud.config.server.git.repos.simple: https://github.com/simple/config-repo
spring.cloud.config.server.git.repos.special.pattern: special*/dev*,*special*/dev*
spring.cloud.config.server.git.repos.special.uri: https://github.com/special/config-repo
spring.cloud.config.server.git.repos.local.pattern: local*
spring.cloud.config.server.git.repos.local.uri: file:/home/configsvc/config-repo

如果 {application}/{profile}不能匹配任何表达式,那么将使用"spring.cloud.config.server.git.uri"对应的值。在上述配置中,对于 "simple" 配置库,匹配模式是simple/* (也就说,无论profile是什么,它只匹配application名称为"simple"应用系统)。"local"库匹配所有application名称以"local"开头任何应用系统,不管profiles是什么(因没有配置对profile的匹配规则,/*后缀会被自动的增加到任何的匹配表达式中 ),special配置库只能匹配profiles为dev*的,大家应该看懂了,simple、special、local可以自己配置。

第三种:

spring.cloud.config.server.git.uri=https://github.com/vincent-ren/spring-boot-profile.git
spring.cloud.config.server.git.searchPaths={application}

git地址是我的真实使用过的地址(可看),配置此项”spring.cloud.config.server.git.searchPaths={application}“,配置客户端获取配置会根据自己设置的的application名去git仓库中根目录下的对应/{application}文件夹去寻找配置。

作为配置服务安全问题一定会很重要。

下篇文章接着说配置服务的安全问题。

搭建spring cloud config的更多相关文章

  1. SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心

    目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...

  2. spring cloud config搭建说明例子(四)-补充配置文件

    服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</groupId> ...

  3. spring cloud config搭建说明例子(三)-添加actuator

    添加心跳 服务端 ConfigServer pom.xml添加actuator包 <dependency> <groupId>org.springframework.cloud ...

  4. spring cloud config搭建说明例子(二)-添加eureka

    添加注册eureka 服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</ ...

  5. Spring Cloud Config(三):基于JDBC搭建配置中心

    1.简介 本文主要内容是基于jdbc搭建配置中心,使应用从配置中心读取配置信息并成功注册到注册中心,关于配置信息表结构仅供参考,大家可以根据具体需要进行扩展. 2.Config Server 搭建 2 ...

  6. Spring Cloud Config(二):基于Git搭建配置中心

    1.简述 本文选用Git作为配置仓库,新建两个环境的配置文件夹,dev 和 test,文件夹中分别存放 Config Client 端的配置文件,目录结构如下: ├ ─ ─ dev └ ─ ─ con ...

  7. Spring Cloud搭建手册(2)——Spring Cloud Config

    ※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7. 1.首先需要创建一个config-server工程,作为配置中心的服务器,用来与git ...

  8. Spring Cloud Config 搭建Config 服务

    配置中心: open API 配置生效监控 一致性的K-V存储 统一配置的实时推送 配置全局恢复.备份.历史版本 高可用集群 通过config 获取配置,流程: 下面介绍,基于spring cloud ...

  9. ubuntu14&period;04 spring cloud config server &plus; gradle搭建

    Server端:在eclipse上,创建Java Project项目.自带的src包删掉手动建文件夹.基础的目录文件都创建上 |--ZSpringCloud|--build.gradle|----sr ...

随机推荐

  1. PHP 定界符使用

    在PHP代码中,如果不想一行一行的拼接HTML或者JS的话,那么使用定界符将是最好的帮手! 使用方法: <<<eof .......html/js..... eof; 注意事项:(别 ...

  2. Python核心编程-基础

    python编码风格指南:www.Python.org/doc/essays/styleguide.htmlwww.Python.org/dev/peps/pep-0007/www.Python.or ...

  3. 合并两个有序数组a和b到c

    问题:两个有序数组a和b,合并成一个有序数组c. // 合并两个有序数组a和b到c void Merge_Array(int a[], int n, int b[], int m, int c[]) ...

  4. JDK1&period;5新特性&lpar;四&rpar;&hellip&semi;&hellip&semi;Autoboxing&sol;Unboxing

    援引 Autoboxing/Unboxing - This facility eliminates the drudgery of manual conversion between primitiv ...

  5. Yii2版本号新特性简单介绍

    Yii2 Beta版本号在今年4月份公布.眼下正在改动问题和完好文档中. Yii2要求PHP版本号不低于5.4,主要有例如以下改进: 1)支持PHP框架间协作组制定的PSR-4标准,这简化了文件夹并提 ...

  6. 【网络流&num;6】POJ 3041 Asteroids 二分图最大匹配 - 《挑战程序设计竞赛》例题

    学习网络流中ing...作为初学者练习是不可少的~~~构图方法因为书上很详细了,所以就简单说一说 把光束作为图的顶点,小行星当做连接顶点的边,建图,由于 最小顶点覆盖 等于 二分图最大匹配 ,因此求二 ...

  7. 为什么大多数培训机构还停留在只教ssh框架?

    最近听一些朋友说,招聘面试的很多人简历都差不多,大部分人的简历上面都写了熟悉ssh框架,我朋友就在吐槽,为什么这些人简历都差不多,并且都熟悉ssh框架? 后面他说, 可能这些人都是培训机构出来的, 然 ...

  8. 使用SQL&ast;Plus连接数据库

    About SQL*Plus SQL*Plus is the primary command-line interface to your Oracle database. You use SQL*P ...

  9. 【只要有ENA千万别用NCBI】拆分SRA文件,通过SRAtoolkits

    只要有ENA千万别用NCBI!!!! 最近开始分析网上Download的数据,一开始用人家现成的GWAS数据,后来觉得反正自己的数据到手该做的也是要做的,出来混早晚是要还的,所以就开始从头分析一些SR ...

  10. jQuery中&dollar;&lpar;function&lpar;&rpar;&lbrace;&rcub;&rpar;与&lpar;function&lpar;&dollar;&rpar;&lbrace;&rcub;&rpar;&lpar;jQuery&rpar;、&dollar;&lpar;document&rpar;&period;ready&lpar;function&lpar;&rpar;&lbrace;&rcub;&rpar;等的区别详解

    1.(function($) {…})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...