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这个字段是存在服务端的, 所以如果可以读取出来, 就证明分布式配置中心是可以用的, 之后我们来运行一下服务

访问接口

http://localhost:8082/hello

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分布式配置中心的更多相关文章

  1. SpringCloud学习(七)高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

    上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用 准备工作 ...

  2. Spring-cloud微服务实战【九】:分布式配置中心config

      回忆一下,在前面的文章中,我们使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一个完整的微服务系统,不管是队内还是对外都已经比较完善了,那我们 ...

  3. SpringCloud学习笔记(7):使用Spring Cloud Config配置中心

    简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件 ...

  4. 【SpringCloud】第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  5. SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

    上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如 ...

  6. SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  7. SpringCloud-config分布式配置中心

    为什么要统一管理微服务配置? 随着微服务不断的增多,每个微服务都有自己对应的配置文件.在研发过程中有测试环境.UAT环境.生产环境,因此每个微服务又对应至少三个不同环境的配置文件.这么多的配置文件,如 ...

  8. springcloud学习之路: (四) springcloud集成Hystrix服务保护

    Hystrix是一套完善的服务保护组件, 可以实现服务降级, 服务熔断, 服务隔离等保护措施 使用它可以合理的应对高并发的情况 做到保护服务的效果 1. 导入依赖 <dependency> ...

  9. springcloud学习之路: (三) springcloud集成Zuul网关

    网关就是做一下过滤或拦截操作 让我们的服务更加安全 用户访问我们服务的时候就要先通过网关 然后再由网关转发到我们的微服务 1. 新建一个网关服务Module 2. 依然选择springboot工程 3 ...

随机推荐

  1. 01-Django 简介

    一.MVC框架(模型-视图-控制器缩写,软件的构建模式) 一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需 ...

  2. nginx典型官方模块解释

    模块名称 作用 语法 默认 配置位置 配置举例 结果验证 备注 1 --with-http_stub_status_module 监控Nginx的服务器连接状态 stub_status   serve ...

  3. HashMap底层实现及原理

    注意:文章的内容基于JDK1.7进行分析.1.8做的改动文章末尾进行讲解.       一.先来熟悉一下我们常用的HashMap: 1.HashSet和HashMap概述 对于HashSst及其子类而 ...

  4. excel制作田字格,excel行高磅,列宽1/10英寸;

    打开一个excel表格,发现列宽是行高的4倍: 开始-格式中查看,发现行高14.25磅,列宽8.38*1/10英寸: 网上百度,了解1英寸=72磅: 那么列宽8.38=60.336磅: 60.336英 ...

  5. PointNet++作者的视频讲解文字版

    转载请注明本文链接: https://www.cnblogs.com/Libo-Master/p/9759130.html PointNet: Deep Learning on Point Sets ...

  6. luoguP3242 [HNOI2015]接水果

    题意 考虑整体二分. 考虑路径\((x,y)\)被路径\((u,v)\)包含需要满足什么条件: 设\(dfn_x\)表示\(x\)的\(dfs\)序,\(low_x=dfn_x+size_x-1\), ...

  7. 【oracle】DATE输出是什么东西

    SELECT TO_CHAR(SYSDATE) FROM DUAL;

  8. [日常] 用vim的时候发现的不是很小的bug...

    前一天晚上的时候不知道搞啥了...第二天早上起来开 gnome-system-monitor 的时候发现CPU占用好像不太对头 (一直有个核是 \(100\%\)), 转到进程的时候发现使用最高的居然 ...

  9. ELK 框架整体流程编写 以及logstash脚本编写

    Elasticsearch Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引 ...

  10. 在项目中使用Solr

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...