上一章节,我们讲解了服务网关zuul,本章节我们从git和本地两种存储配置信息的方式来讲解springcloud的分布式配置中心-Spring Cloud Config。

一、Spring Cloud Config简介:

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。

二、新建springcloud-config-server模块:

1. 参考:一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目 来新建一个基本模块结构

2. 修改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> <parent>
<groupId>com.haly</groupId>
<artifactId>springcloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent> <groupId>com.haly</groupId>
<artifactId>springcloud-config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-config-server</name>
<description>新建一个config server项目</description> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<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>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

3. 新建入口启动类SpringcloudConfigServerApplication

@EnableConfigServer,表示开启Config Server

package com.haly;

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; @EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudConfigServerApplication.class, args);
} }

4. 修改application.properties文件(git方法存储配置)

在Github上创建一个项目,并在上面添加配置文件config-client.properties,配置文件里添加一个属性config=NewConfig !

application.properties中配置服务信息以及git信息

spring.application.name=springcloud-config-server
server.port=7001
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ spring.cloud.config.server.git.uri=https://github.com/FunriLy/springcloud-study/
spring.cloud.config.server.git.searchPaths=config-repo
spring.cloud.config.server.git.username=Username
spring.cloud.config.server.git.password=Password

启动工程 Config Server,浏览器输入:http://localhost:7001/config-client/default/master,得到结果如下

{
"name": "config-client",
"profiles": [
"default"
],
"label": null,
"version": "52b88000fc46a8b1d72a2979f4721d45a3d1f429",
"state": null,
"propertySources": [
{
"name": "https://github.com/FunriLy/springcloud-study//config-repo/config-client.properties",
"source": {
"configword": "NewConfig !"
}
}
]
}

三、新建springcloud-config模块(可不要):

其实我在工作中喜欢创建一个springcloud-config模块,没有业务代码,只有pom.xml文件和resources目录,resources放一下公共的配置文件,可以给其它模块引用

例如配置:

spring-data-mysql.xml 文件

spring-data-redis-single.xml 文件

spring-jdbc-mysql.xml 文件

bootstrap.yml 配置文件

1. 新增pom.xml文件

<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.sinaif</groupId>
<artifactId>sinaif-weibo-opt</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent> <groupId>com.sinaif</groupId>
<artifactId>sinaif-config</artifactId>
<name>${project.artifactId}</name> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

2. 新增bootstrap.yml文件(可以统一配置config,eureka ,hystrix等待)

注意这里是bootstrap.properties而不是appliction.properties因为bootstrap.properties会在应用启动之前读取,而spring.cloud.config.uri会影响应用启动

spring:
cloud:
config:
name: config-client
profile: default
label: master
uri: http://localhost:7001/ eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

上面配置config属性的规则,以及前面我们直接用 http://localhost:7001/config-client/default/master 访问配置的规则

URL与配置文件的映射关系

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

application是config-client-dev.properties文件中的config-client值,profile是一个active的profile,一般用来表示环境信息,label是一个可选的标签,一般用来表示目录名称。
比如,我在Github上的文件名是config-client.properties,在Github上都是default环境,默认为master分支。所以就是/config-client/default/master

四、新建springcloud-config-server 的client模块:

我用之前写过的springcloud-feign-client模块,在FeignController类里增加一个/testconfig方法充当Client端,springcloud-feign-client模块内容参考:一起来学Spring Cloud | 第四章:服务消费者 ( Feign )

1. 在pom.xml文件中,增加上面新建的模块的依赖包,这样我们就能使用springcloud-config模块中的eureka和config配置

<dependency>
            <groupId>com.haly</groupId>
            <artifactId>springcloud-config</artifactId>
            <version>0.0.1-SNAPSHOT</version>
  </dependency>

2. 在FeignController类中增加一个测试方法

@Value("${configword}")
String configword; @GetMapping(value = "/testconfig")
public String testconfig(@RequestParam String name) {
return name +",git配置值:" + configword ; }

3.  启动服务,进行测试

依次启动springcloud-eureka-server模块,启动springcloud-config-server模块,启动springcloud-feign-client模块

访问:http://localhost:9600/testconfig?name=young码农,返回结果 :

young码农,git配置值:NewConfig !

五、使用本地配置获取配置项:

1. 修改springcloud-config-server模块中的application.properties配置如下

spring.application.name=springcloud-config-server
server.port=7001
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ # 表示使用本地config配置
spring.profiles.active=native
# 表示本地配置读取的目录文件位置
spring.cloud.config.server.native.searchLocations: classpath:/config/

2. 在springcloud-config-server模块resources目录下新建一个config文件,在config文件下新建2个配置文件,配置项内容如下:

configs-dev.properties:configword: dev-configword

configs-test.properties:configword: test-configword

3. 修改springcloud-config模块的bootstrap.yml配置文件的config配置

ps: 目前我们设置的profile为dev,所以会从configs-dev.properties配置文件中读取数据

spring:
cloud:
config:
name: configs
profile: dev
label: config
uri: http://localhost:7001/ eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

4. 启动服务,运行结果

依次启动springcloud-eureka-server模块,启动springcloud-config-server模块,启动springcloud-feign-client模块

先访问config-server,浏览器输入:http://localhost:7001/configs/dev/config

{
"name": "configs",
"profiles": [
"dev"
],
"label": "config",
"version": null,
"state": null,
"propertySources": [
{
"name": "classpath:/config/configs-dev.properties",
"source": {
"configword": "dev-configword"
}
}
]
}

在访问config-client,浏览器输入:http://localhost:9600/testconfig?name=young码农,返回结果如下:

young码农,git配置值:dev-configword

5. 修改springcloud-config模块的bootstrap.yml配置文件的profile属性:

ps: 目前我们设置的profile为dev,所以会从configs-test.properties配置文件中读取数据

spring:
cloud:
config:
name: configs
profile: test
label: config
uri: http://localhost:7001/

6.  再次启动服务,运行结果

依次启动springcloud-eureka-server模块,启动springcloud-config-server模块,启动springcloud-feign-client模块

先访问config-server,浏览器输入:http://localhost:7001/configs/dev/config

{
"name": "configs",
"profiles": [
"test"
],
"label": "config",
"version": null,
"state": null,
"propertySources": [
{
"name": "classpath:/config/configs-test.properties",
"source": {
"configword": "test-configword"
}
}
]
}

在访问config-client,浏览器输入:http://localhost:9600/testconfig?name=young码农,返回结果如下:

young码农,git配置值:test-configword

一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)的更多相关文章

  1. Spring Cloud(七):配置中心(Git 版与动态刷新)【Finchley 版】

    Spring Cloud(七):配置中心(Git 版与动态刷新)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-04-24 |  Spring Cloud Confi ...

  2. Spring Cloud第十一篇 | 分布式配置中心高可用

    ​ 本文是Spring Cloud专栏的第十一篇文章,了解前十篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...

  3. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)

    在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...

  4. Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config

    目录 Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config Spring Cloud Config(二):基于Git搭建配置中心 Spring Cl ...

  5. SpringCloud学习(六)分布式配置中心(Spring Cloud Config)(Finchley版本)

    在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理, ...

  6. SpringCloud(6)分布式配置中心Spring Cloud Config

    1.Spring Cloud Config 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组 ...

  7. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...

  8. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...

  9. 第六篇: 分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...

随机推荐

  1. 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转

    题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...

  2. LeetCode 837. New 21 Game

    原题链接在这里:https://leetcode.com/problems/new-21-game/ 题目: Alice plays the following game, loosely based ...

  3. MongoDB 4.2 新特性解读 (转载)

    MongoDB World 2019 上发布新版本 MongoDB 4.2 Beta,包含多项数据库新特性,本文尝试从技术角度解读. Full Text Search MongoDB 4.2 之前,全 ...

  4. 洛谷 P2422 良好的感觉 题解

    P2422 良好的感觉 题目描述 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人的舒适程度定义为[i, j]中最不舒服的那一天的感 ...

  5. win7企业版激活

    win7企业版激活:(亲测有效) 打开命令提示符,依次执行下面的代码,分别表示:安装win7企业版密钥,设置kms服务器,激活win7企业版,查询激活期限,kms一般是180天,到期后再次激活. sl ...

  6. 堆(heap)和栈(stack)有什么区别??

    简单的可以理解为: heap:是由malloc之类函数分配的空间所在地.地址是由低向高增长的. stack:是自动分配变量,以及函数调用的时候所使用的一些空间.地址是由高向低减少的. 预备知识—程序的 ...

  7. 定制比特币btc地址address

    https://99bitcoins.com/how-to-get-a-custom-bitcoin-address/ https://en.bitcoin.it/wiki/Vanitygen htt ...

  8. 【mybatis源码学习】mybatis的结果映射

    一.mybatis结果映射的流程 二.mybatis结果映射重要的类 1.org.apache.ibatis.executor.resultset.ResultSetWrapper(对sql执行返回的 ...

  9. N以内的素数计算(Java代码)

    列出小于N的所有素数 普通计算方式, 校验每个数字 优化的几处: 判断是否整除时, 除数使用小于自身的平方根的素数 大于3的素数, 都在6的整数倍两侧, 即 6m - 1 和 6m + 1 publi ...

  10. Linux下限制某程序CPU占用

    CentOS 7下CPULimit的部署与使用途中 部署 git clone https://github.com/opsengine/cpulimit.git cd cpulimit make cp ...