Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
1.环境介绍
这一篇文章中我们终于没有新工程要建了,主要是对现有的工程进行改造。在传统的开发中,我们可能会把用户、机构、资源、权限这些比较通用的东西抽取出来做一个底层平台,但是在spring cloud的世界里,所有的都是服务;所有的服务都可以集群部署。
2.配置中心服务化
2.1 改造mirco-service-spring-config
因为我们之前在git上上传的配置目录也叫mirco-service-config,所以我把之前的配置中心工程改为了mirco-service-spring-config。
- 为“mirco-service-spring-config”工程的pom文件中加入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 配置文件中加入
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
- 为启动文件加入@EnableDiscoveryClient注解
2.2 改造mirco-service-provider、mirco-service-consumer
主要是配置文件的改动,改动后的bootstrap.yml配置文件如下
spring:
cloud:
config:
discovery:
service-id: service-config-server #新加入的配置
enabled: true #打开配置文件从注册中心获取
#uri: http://localhost:7001/
profile: test
name: provider
label: master
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
因为这里面要从注册中心找到配置中心,再从配置中心找配置文件,而bootstrap.yml文件启动的时间比较早,所以这里一定要加入注册中心的地址。用同样的方法改造mirco-service-consumer。至此,改造完成。
3. 配置中心实时刷新
我们这里面以mirco-service-consumer为例。
3.1 加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
这里的actuator之前在第一章的视频里面讲过,这是一个用来做应用健康检查的组件,同时也可以做应用配置的刷新。
3.2 加入配置
- 为了方便演示,我们就直接在bootstrap.yml文件中加入如下配置:
management:
endpoints:
web:
exposure:
include: "*"
这个配置的意思是放开actuator相关的目录限制,没放开之前http://localhost:8002/actuator/env是看不到东西的,能看出说明配置成功。
- 在MyFristConsumerController上加入@RefreshScope注解,只要类上加了@RefreshScope注解,并且类中有配置文件相关的变量,在应用配置刷新时,都会被更新。
3.3 测试
- 访问http://localhost:8002/consumerHelloWorld?name=rose,看到我们的port是8002。
- 修改github上的consumer.yml,将port改为8003。
- 使用"curl -X POST http://localhost:8002/actuator/refresh"刷新配置。
- 重复第一个步骤,可以看到port变为8003。
- 由于我们这里改的是应用服务的端口,而我们刷新后,在应用中的参数配置确实变了,但访问端口还是8002,说明这个刷新配置也是有局限的,已启动的应用实际访问端口不会变。但下次启动时会变。
4.一点点重要的事情
- 教程中源代码地址github-Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
- 教程对应的视频地址爱奇艺-Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新的更多相关文章
- Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控
目录 1.环境介绍 2.服务监控 2.1 加入依赖 2.2 修改配置文件 2.3 修改启动文件 2.4 监控服务 2.5 小结 3. 利用hystrix实现消费服务熔断 3.1 加入服务熔断 3.2 ...
- Spring Cloud实战之初级入门(六)— 服务网关zuul
目录 1.环境介绍 2.api网关服务 2.1 创建工程 2.3 api网关中使用token机制 2.4 测试 2.5 小结 3.一点点重要的事情 1.环境介绍 好了,不知不觉中我们已经来到了最后一篇 ...
- Spring Cloud实战微服务入门
1.spring cloud是什么? 是一个快速构建分布式系统的工具集,构建于Spring Boot之上 2.spring cloud 的特点 约定优于配置 开箱即用.快速启动 适用于各种环境 轻量级 ...
- spring cloud实战与思考(五) JWT之携带敏感信息
需求: 需要将一些敏感信息保存在JWT中,以便提高业务处理效率. 众所周知JWT协议RFC7519使用Base64Url对Header和Payload的Json字符串进行编解码.A JWT is re ...
- SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心
目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...
- SpringCloud实战之初级入门(二)— 服务注册与服务调用
目录 1.环境介绍 2.服务提供 2.1 创建工程 2.2 修改配置文件 2.3 修改启动文件 2.5 亲测注意事项 3.服务调用 3.1 创建工程 3.2 修改配置文件 3.3 修改启动文件 3.4 ...
- 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战
一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ...
- [Spring Cloud实战 | 第六篇:Spring Cloud Gateway+Spring Security OAuth2+JWT实现微服务统一认证授权
一. 前言 本篇实战案例基于 youlai-mall 项目.项目使用的是当前主流和最新版本的技术和解决方案,自己不会太多华丽的言辞去描述,只希望能勾起大家对编程的一点喜欢.所以有兴趣的朋友可以进入 g ...
- Spring Cloud实战 | 最终篇:Spring Cloud Gateway+Spring Security OAuth2集成统一认证授权平台下实现注销使JWT失效方案
一. 前言 在上一篇文章介绍 youlai-mall 项目中,通过整合Spring Cloud Gateway.Spring Security OAuth2.JWT等技术实现了微服务下统一认证授权平台 ...
随机推荐
- 1.css介绍
CSS介绍 我们为什么需要CSS? 使用css的目的就是让网页具有美观一致的页面,另外一个最重要的原因是内容与格式分离 在没有CSS之前,我们想要修改HTML元素的样式需要为每个HTML元素单独定义样 ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 解决winform datagridview的ClearSelection无效问题
因为把方法放在了界面的构造方法里,此时datagridview还没绘制出来,所以ClearSelection方法无效,放在control或form的load方法里就没问题了 参考:https://ww ...
- 【loj#6503.】「雅礼集训 2018 Day4」Magic(生成函数+容斥)
题面 传送门 题解 复杂度比较迷啊-- 以下以\(n\)表示颜色总数,\(m\)表示总的卡牌数 严格\(k\)对比较难算,我们考虑容斥 首先有\(i\)对就代表整个序列被分成了\(m-i\)块互不相同 ...
- 【数据结构】10分钟教你用栈求解迷宫老鼠问题超详细教程附C++源代码
问题描述 给定一张迷宫地图和一个迷宫入口,然后进入迷宫探索找到一个出口.如下图所示: 该图是一个矩形区域,有一个入口和出口.迷宫内部包含不能穿越的墙壁或者障碍物.这些障碍物沿着行和列放置,与迷宫的边界 ...
- 为什么int类型的数据可以存储超过9999?
int占4字节,4*8=32位,10进制取值范围为 (-2^31-1)~(2^31-1):-2147483648~2147483647 package test; public class test1 ...
- Linux 通过程序名获取进程ID并Kill
#!/bin/bash pids=$(ps -ef | grep XXX| awk '{print $2}') for pid in $pids do echo $pid kill -9 $pid d ...
- [原创] Laravel 启动流程
目录 1. 程序启动准备 1.1 容器基础配置 1.2 核心类绑定 1.3 实例化 Http 核心类 2. 请求实例化 3. 请求处理 3.1 请求处理环境初始化 1. 环境监测 \Illuminat ...
- [LnOI2019]加特林轮盘赌
Luogu5249 轮流开枪打一个环上的人 , 每次\(p\)的概率打死 , \(p\)始终相同 , 从第\(1\)个人开始 , 求第\(k\)个人成为唯一幸存者的概率 \(19.3.30\) 官方题 ...
- CF1012B Chemical table 题解【二分图】【构造】
有意思的网格图转化.CF Div.1 还是挺有难度的. 注:由于本题有较完美的中文题面,所以不贴英文题面. 英文题面 题目描述 Innopolis 大学的教授正努力研究元素周期表.他们知道,有 \(n ...