一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)
上一章节,我们讲解了服务网关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)的更多相关文章
- Spring Cloud(七):配置中心(Git 版与动态刷新)【Finchley 版】
Spring Cloud(七):配置中心(Git 版与动态刷新)[Finchley 版] 发表于 2018-04-19 | 更新于 2018-04-24 | Spring Cloud Confi ...
- Spring Cloud第十一篇 | 分布式配置中心高可用
本文是Spring Cloud专栏的第十一篇文章,了解前十篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...
- SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...
- Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config
目录 Spring Cloud Config(一):聊聊分布式配置中心 Spring Cloud Config Spring Cloud Config(二):基于Git搭建配置中心 Spring Cl ...
- SpringCloud学习(六)分布式配置中心(Spring Cloud Config)(Finchley版本)
在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理, ...
- SpringCloud(6)分布式配置中心Spring Cloud Config
1.Spring Cloud Config 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组 ...
- SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...
- 第六篇: 分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...
随机推荐
- 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转
题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...
- LeetCode 837. New 21 Game
原题链接在这里:https://leetcode.com/problems/new-21-game/ 题目: Alice plays the following game, loosely based ...
- MongoDB 4.2 新特性解读 (转载)
MongoDB World 2019 上发布新版本 MongoDB 4.2 Beta,包含多项数据库新特性,本文尝试从技术角度解读. Full Text Search MongoDB 4.2 之前,全 ...
- 洛谷 P2422 良好的感觉 题解
P2422 良好的感觉 题目描述 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人的舒适程度定义为[i, j]中最不舒服的那一天的感 ...
- win7企业版激活
win7企业版激活:(亲测有效) 打开命令提示符,依次执行下面的代码,分别表示:安装win7企业版密钥,设置kms服务器,激活win7企业版,查询激活期限,kms一般是180天,到期后再次激活. sl ...
- 堆(heap)和栈(stack)有什么区别??
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地.地址是由低向高增长的. stack:是自动分配变量,以及函数调用的时候所使用的一些空间.地址是由高向低减少的. 预备知识—程序的 ...
- 定制比特币btc地址address
https://99bitcoins.com/how-to-get-a-custom-bitcoin-address/ https://en.bitcoin.it/wiki/Vanitygen htt ...
- 【mybatis源码学习】mybatis的结果映射
一.mybatis结果映射的流程 二.mybatis结果映射重要的类 1.org.apache.ibatis.executor.resultset.ResultSetWrapper(对sql执行返回的 ...
- N以内的素数计算(Java代码)
列出小于N的所有素数 普通计算方式, 校验每个数字 优化的几处: 判断是否整除时, 除数使用小于自身的平方根的素数 大于3的素数, 都在6的整数倍两侧, 即 6m - 1 和 6m + 1 publi ...
- Linux下限制某程序CPU占用
CentOS 7下CPULimit的部署与使用途中 部署 git clone https://github.com/opsengine/cpulimit.git cd cpulimit make cp ...