Spring Cloud Config 和Spring Cloud Bus实现配置中心

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Spring Cloud是很多组件的集合,Spring将常用的技术框架进行包装和整合,如mybatis zookeeper rabbitmq redis等等,还有一些科技公司贡献出来的一些经过生产环境验证的组件如奈飞公司贡献出的eureke(服务发现) Hystrix(监控与隔离)  Feign(声明式服务调用)  Ribbon(负载均衡) Zuul(网关) 等等,详情移步官网 SpringCloud

Spring Cloud是目前比较流行的微服务开发框架,可以与容器技术如docker一起使用,提高生产力。但是组件过多也有一定的学习曲线,而且适合大公司的架构不见得适合我们的业务,要根据实际情况灵活运用。

Spring Cloud Config是基于git/svn仓库来管理配置,然后有一个ConfigServer来负责拉取配置,ConfigClient是使用配置的应用,比如现在有很多微服务应用,如订单管理,用户管理,地址管理,库存管理等等,在这些微服务的pom中增加ConfigClient就可以自动从ConfigServer拉取配置。我们还希望配置更新之后可以实时获取,这时候需要用到spring cloud中的bus组件,bus其实就是基于amqp的一个消息总线,spring对rabbitmq和kafka支持的比较好。常见的场景是:

1、更改配置

2、push到远程仓库

3、push动作触发一个web hook

4、这个web hook会使用post访问ConfigServer的一个接口

5、ConfigServer通过rabbitmq发送一个广播

6、client收到消息,自动拉取并刷新配置

这些不需要任何编码工作,只需要配置就可以。下面是一个简单的例子。

1、rabbitmq安装参照官网,十分简单,也可以参考俺的博客

2、启动一个Config Server

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><groupId>spring_cloud</groupId><artifactId>config_demo</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config</artifactId><version>2.0.1.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-bus</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId><version>2.0.1.RELEASE</version></dependency></dependencies><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</project>

入口类:

@EnableConfigServer@SpringBootApplicationpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

配置:application.properties

server.port=8888
#配置仓库地址
spring.cloud.config.server.git.uri=https://github.com/mychemicalromance/spring_cloud_config
## 配置文件夹
spring.cloud.config.server.git.searchPaths=configs
## 分支
spring.cloud.config.label=master
## 以下是bus相关配置 替换成自己的就行,比如host port name password
spring.cloud.bus.trace.enabled=true
spring.rabbitmq.host=192.168.137.5
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=rabbit
management.endpoints.web.exposure.include=*

解释:Spring Cloud只需要上述入口类就启动了一个web工程,使用的是嵌入的tomcat/jetty。默认读取application.[properties|yml|json] 使用喜欢的格式就行。

3、Config Client

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><groupId>spring_cloud</groupId><artifactId>config_client</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config</artifactId><version>2.0.1.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-bus</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId><version>2.0.1.RELEASE</version></dependency></dependencies><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</project>

入口类:

@Configuration
@EnableAutoConfiguration
@RestController
@RefreshScope
public class Application {@Value("${a}")String name;@RequestMapping("/")public String home() {return "Hello " + name;}public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

配置:application.properties

server.port=8002
## bus相关配置,替换成自己的就行,比如host port name password
spring.cloud.bus.trace.enabled=true
spring.rabbitmq.host=192.168.137.5
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=rabbit
## 读取app1的配置
spring.application.name=app1
## profile是dev,可以有测试test,沙箱mirror,线上online等等
spring.cloud.config.profile=dev
management.endpoints.web.exposure.include=*


3、启动Config Server和Config Client,首先访问localhost:8888/app1/dev,可以看到所有配置,然后访问localhost:8002/可以看到获取了配置。然后本地更改配置文件并push。由于在github上配置web hook来调用本地是不现实的,所以我们用curl来模拟post访问Config Server,如果是在公司的git上,并且在公司局域网内可以访问Config Server,可以配置web hook来测试。

curl -X POST "http://localhost:8888/actuator/bus-refresh"

然后刷新Config Client,就能看到最新的配置了。

转载于:https://my.oschina.net/wuxiaofei/blog/2088395

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM Linux启动过程分析

1. 引 言 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的&#xff0c;之后在 GNU的支持下&#xff0c;Linux 获得了巨大的发展。虽然 Linux 在桌面 PC 机上的普及程度远不及微软的 Windows 操作系统&#xff0c;但它的发展速度之快、用户数量的日益…

你有没有靠谱的基因?一个人靠不靠谱,其实就看这三点:“凡事有交代,件件有着落,事事有回音。”...

你有没有靠谱的基因&#xff1f;一个人靠不靠谱&#xff0c;其实就看这三点&#xff1a;“凡事有交代&#xff0c;件件有着落&#xff0c;事事有回音。” 故事一、做了就忘了&#xff1f; 一天上班后&#xff0c;我让小王给上级部门送一个材料。 一个小时过去了&#xff0c;没…

CMOS图像传感器——闪烁(flicker)现象

一、概述 闪烁(Flicker),通常发生在室内场景,曝光时间设置如果不是光源能量周期的整数倍,则图像不同位置处积累的信号强度不同,并呈周期性变化,这是单帧图像的情况。在视频序列上,如果满足一定条件,视频会出现条纹模式在垂直方向上缓慢移动。 二、形成原因 1、光源 …

一条命令教你安装centos下面的pip服务

yum install -y python-pip转载于:https://blog.51cto.com/12131824/2177874

strcpy,memcpy,memset函数实现

strcpy 实现&#xff0c;只能拷贝字符串 char* strcpy(char* des,const char* source) {char* rdes; assert((des ! NULL) && (source ! NULL));while((*des *source)!\0);return r; } memcpy 实现&#xff0c;注意目的地址和源地址重合的情况&#xff0c;以及强制类…

CMOS图像传感器——图像传感器噪声

图像传感器噪声取决于图像传感器的制作工艺、内部结构及内部补偿技术等原因,噪声反应了图像传感器的内部特性。CMOS图像传感器基本原理见: CMOS图像传感——概述_沧海一升的博客-CSDN博客_cmos图像传感器CMOS图像传感器基本介绍https://blog.csdn.net/qq_21842097/article/d…

TI Davinci DM6441嵌入式Linux移植攻略——UBL移植篇

目录(?)[] 一DM6441的Boot过程简介二DM6441的UBL移植 CCS文件夹Common文件夹GNU文件夹 移植DDR2移植Nand Flash其它 声明&#xff1a;本文参考网友zjb_integrated的文章《TI Davinci DM6446开发攻略——UBL移植》和《DAVINCI DM365-DM368开发攻略——U-BOOT-2010.12及UBL的移…

python接口自动化测试(二)-requests.get()

环境搭建好后&#xff0c;接下来我们先来了解一下requests的一些简单使用&#xff0c;主要包括&#xff1a; requests常用请求方法使用&#xff0c;包括&#xff1a;get&#xff0c;postrequests库中的Session、Cookie的使用其它高级部分&#xff1a;认证、代理、证书验证、超时…

从一个Android码农视角回顾2018GDD大会

两天的GDD大会结束了&#xff0c;很开心&#xff0c;可以看得出&#xff0c;这次Google真的很用心。不但分享的内容质量很高。而且又有得吃又有得玩&#xff0c;还有许多好看的小姐姐&#xff0c;真不妄我请了两天年假来参加这个大会。先来几张图镇楼 哈哈&#xff0c;跑题了。…

Python3.x和Python2.x的区别[转]

Python3.x和Python2.x的区别 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间&#xff0c;在字符串和整形操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%&#xff0c;还有很大的提升空间。 2.编码 Py3.X源码文件默认使用utf-8…

数字图像处理——图像锐化

图像增强是图像处理的一个重要环节,早期的图像处理就是从图像增强开始的,人们研究对质量低的图像进行处理以获得改善质量后的图像。现今的图像增强还为后续的图像处理,如图像信息提取、图像识别等,提供更高识别度的图像。 从图像处理技术来看,图像的摄取、编码、传输和处理…

DAVINCI DM365-DM368开发攻略——U-BOOT-2010.12及UBL的移植

从盛夏走到深秋&#xff0c;我们继续DAVINCI DM365-DM368的开发。说来惭愧&#xff0c;人家51CTO热情支持本博客&#xff0c;而本人却一直没有像其他博客之星一样频繁更新博客&#xff0c;心里确实说不过去。管理公司确实很累&#xff0c;有更急的客户的项目要做&#xff0c;我…

陈天艺1636050045假设跑步者1小时40分钟35秒跑了24英里。编写一个程序显示每小时以公里为单位的平均速度值...

public class AverageSpeed{ public static void main(String[]args){ double speedkm 60/(45.5/14); double speedm speedkm /1.6; system.out.println&#xff08;“averagespeed ”speedm "m/h"&#xff09; } }转载于:https://www.cnblogs.com/Archon-Cty/p/7…

EMVA 1288 测试标准

一、概述 如果要对比两台相机的性能,我们应该关注哪些参数呢,是焦距、像素、还是光圈大小?这些参数通常广为人知,并且很容易做出对比。但在一些专业领域,例如机器视觉、自动驾驶等行业,计算机算法对图像有着独特的要求,这些标准有些已经跟不上数字成像的发展步伐,而且其…

Spring Boot - 修改Tomcat默认的8080端口

前言 默认情况下&#xff0c;Spring Boot内置的Tomcat服务会使用8080端口启动&#xff0c;我们可以使用以下任何技巧去更改默认的Tomcat端口&#xff1b; 注&#xff1a;我们可以通过server.port0配置&#xff0c;去自动配置一个未被占用的http端口&#xff0c;由操作系统实现。…

2017年度目标

语言&#xff1a;python&#xff0c;lisp&#xff0c;js&#xff0c;html5技术&#xff1a;android&#xff0c;hadoop数学&#xff1a;复变函数&#xff0c;代数&#xff0c;概率&#xff0c;数论英语&#xff1a;reading其他&#xff1a;金融/经济/股票&#xff0c;历史/史记…

嵌入式系统系统升级内核双备份的实现方式

1.nand flash MTD分区 kernels/linux-2.6.31.1-cavm1/drivers/mtd/maps/xxxxx-flash.c /* MTD partitions: From CNW5602 32MB * mtd0: 0x000C0000 00020000 "bootloader" * mtd1: 0x00040000 00020000 "factory_config" * mt…

SerDes接口——架构与电路

随着通信技术的飞速发展&#xff0c;高速串行互连以其结构简单&#xff0c;不需要传输同步时钟&#xff0c;相比并行传输有更高数据传输效率的优点&#xff0c;成为现代通信和数据传输的重要组成部分。随着对数据传输速率要求的不断提高&#xff0c;SERDES应运而生。它是一种时…

Springboot分模块开发详解(2):建立子工程

1.创建base-entity 选中base工程&#xff0c;右键创建一个新的maven工程 自动选择了base这个目录存放子工程 创建后&#xff0c;pom.xml修改成如下内容&#xff1a; <?xml version"1.0"?> <projectxsi:schemaLocation"http://maven.apache.org/POM/4…

到天宫做客(2017寒假培训测试压轴题)

个人QQ&#xff1a;757394026团队QQ&#xff1a;466373640个人博客&#xff1a;www.doubleq.winc/noi/信息学奥数博客&#xff1a;http://www.cnblogs.com/zwfymqz 题目描述 有一天&#xff0c;我做了个梦&#xff0c;梦见我很荣幸的接到了猪八戒的邀请&#xff0c;到天宫陪他吃…