springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心
SpringCloud全家桶中的分布式配置中心SpringCloudConfig, 它使用git来管理配置文件, 在修改配置文件后只需要调用一个接口就可以让新配置生效, 非常方便.
SpringCloudConfig分为两部分, 服务端和客户端, 服务端是用来提供配置文件信息的, 而客户端是用来使用配置文件信息的, 我们接下来就开始集成.
一、SpringCloudConfig服务端
1. 新建一个Module

2. 选择springboot工程

3. 起个名字

4. 选择配置中心服务端

5. 选择注册中心客户端

6. 配置application.properties文件

# 服务端口
server.port = 8088
# 填写注册中心服务器地址
eureka.client.service-url.defaultZone = http://localhost:8081/eureka
# 注册配置中心别名
spring.application.name = service-config
# 配置存储地址(git)
spring.cloud.config.server.git.uri = https://gitee.com/XXX/spring-cloud-config
# 存储文件夹
spring.cloud.config.server.git.search-paths = myconfig
# git主分支
spring.cloud.config.label = master
7. 配置service-config启动文件

// 开启注册中心客户端
@EnableEurekaClient
// 开启配置中心服务器
@EnableConfigServer
二、git仓操作
1. 新建git仓

填写信息

2. 新建文件夹

命名文件夹

3. 新建文件

写入信息
文件的命名是有规范的, [服务名称-环境. properties]否则你的服务器无法读取配置文件, 我们来查看一下service-a的配置文件名称

所以我们的配置文件应该叫
service-objcat-a-dev. properties


三、启动服务访问

http://localhost:8088/service-objcat-a-dev.properties

http://localhost:8088/service-objcat-a-dis.yml

运行无问题
四、SpringCloudConfig服务端
给service-a开启分布式配置服务
1. 首先在service-a的pom中添加依赖

<!-- 分布式配置中心客户端依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2. 修改配置文件
把application.yml修改成bootstrap.yml这里说一下, 这两个名字都是应用的配置文件, 但是bootstrap.yml会先执行, 其次是配置分布式配置中心服务器的规范就是在bootstrap.yml中配置的, 这俩个配置文件可以共存, 这里为了方便起见, 所以直接就改名了, 我们继续

# 分布式配置中心
cloud:
config:
profile: dev
discovery:
enabled: true
service-id: service-config
注意别名一定要跟你上面配置服务器的名称一致, profile千万不要乱写, 写你需要应用配置文件的环境, 还记得我们的配置文件命名方式吗 [服务名-环境.yml]
3. 到这里已经配置完成了, 我们来写个接口验证一下吧!
@Value("${name}")
private String name;
@RequestMapping("/hello")
public String hello() {
return name;
}
@value就是从配置文件中读取一个字段, 我们name这个字段是存在服务端的, 所以如果可以读取出来, 就证明分布式配置中心是可以用的, 之后我们来运行一下服务

访问接口

4. 动态更改
现在我们的配置文件还不能做到远程动态更改, 我们接下来要做的就是线上刷新字段, 不需要重启服务器, 我们首先给service-a导入监控模块的包

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
5. 修改配置文件, 在配置文件中增加如下字段 暴露所有endpoints

management:
endpoints:
web:
exposure:
include: "*"
6. 在控制器中配置刷新注解@RefreshScope, 只有配置过刷新注解的控制器中的值才会被刷新.

7. 重启服务
8. 修改git上的配置信息

9. 再次访问, 发现没有任何变化

10. 这里需要调用一个刷新接口即可, 注意一定要使用post请求, 可以使用命令行或者postman.
命令行:
curl -X POST http://localhost:8082/actuator/refresh
postman:
http://localhost:8082/actuator/refresh

11. 再次访问接口, 成功

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心的更多相关文章
- SpringCloud学习(七)高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用 准备工作 ...
- Spring-cloud微服务实战【九】:分布式配置中心config
回忆一下,在前面的文章中,我们使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一个完整的微服务系统,不管是队内还是对外都已经比较完善了,那我们 ...
- SpringCloud学习笔记(7):使用Spring Cloud Config配置中心
简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件 ...
- 【SpringCloud】第七篇: 高可用的分布式配置中心(Spring Cloud Config)
前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...
- SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如 ...
- SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...
- SpringCloud-config分布式配置中心
为什么要统一管理微服务配置? 随着微服务不断的增多,每个微服务都有自己对应的配置文件.在研发过程中有测试环境.UAT环境.生产环境,因此每个微服务又对应至少三个不同环境的配置文件.这么多的配置文件,如 ...
- springcloud学习之路: (四) springcloud集成Hystrix服务保护
Hystrix是一套完善的服务保护组件, 可以实现服务降级, 服务熔断, 服务隔离等保护措施 使用它可以合理的应对高并发的情况 做到保护服务的效果 1. 导入依赖 <dependency> ...
- springcloud学习之路: (三) springcloud集成Zuul网关
网关就是做一下过滤或拦截操作 让我们的服务更加安全 用户访问我们服务的时候就要先通过网关 然后再由网关转发到我们的微服务 1. 新建一个网关服务Module 2. 依然选择springboot工程 3 ...
随机推荐
- unity_animator_stop_replay(重新播放)
对于一个Animation重复播放,但在隐藏后,再次显示播放会出现有些属性未复原 问题描述 特效同事给的Animation中更改了物体的很多属性,如Active,Alpha, Scale,Positi ...
- python语法区别
python语法区别: 大小写敏感 (动态语言:python)变量不用声明 p.s: 静态语言(Java)必须声明变量 语句末尾可以不打分号 可以直接进行数学计算 复制.粘贴功能失效,粘贴到别的地方的 ...
- Tensorflow之多元线性回归问题(以波士顿房价预测为例)
一.根据波士顿房价信息进行预测,多元线性回归+特征数据归一化 #读取数据 %matplotlib notebook import tensorflow as tf import matplotlib. ...
- 分析-flag被盗
用wireshark打开数据包 寻找http协议的数据 找一个post包进行TCP追踪流 寻找flag
- 【转】Redis面试题
1.谈谈Redis的主从复制流程 有几个重点:主节点负责写,从节点负责读,slave node 主要用来进行横向扩容,做读写分离,扩容的 slave node 可以提高读的吞吐量.必须开启 maste ...
- python科学计算库-pandas
------------恢复内容开始------------ 1.基本概念 在数据分析工作中,Pandas 的使用频率是很高的, 一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 ...
- BoW算法及DBoW2库简介
由于在ORB-SLAM2中扩展图像识别模块,因此总结一下BoW算法,并对DBoW2库做简单介绍. 1. BoW算法 BoW算法即Bag of Words模型,是图像检索领域最常用的方法,也是基于内容的 ...
- Paper | SkipNet: Learning Dynamic Routing in Convolutional Networks
目录 1. 概括 2. 相关工作 3. 方法细节 门限模块的结构 训练方法 4. 总结 作者对residual network进行了改进:加入了gating network,基于上一层的激活值,得到一 ...
- 大话设计模式Python实现-建造者模式
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 下面是一个建造者模式的demo #!/usr/bin/env python # ...
- 可能会搞砸你的面试:你知道一个TCP连接上能发起多少个HTTP请求吗?
本文由原作者松若章原创发布,作者主页:zhihu.com/people/hrsonion/posts,感谢原作者的无私分享. 1.引言 一道经典的面试题是:从 URL 在浏览器被被输入到页面展现的过程 ...