java B2B2C电子商务平台分析之八--配置中心svn示例和refresh
国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三
svn版本 同样先示例server端的代码,基本步骤一样。
1、添加依赖
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit</artifactId></dependency>
</dependencies>
复制代码
需要多引入svnkitr包
2、配置文件
server:port: 8001spring:cloud:config:server:svn:uri: http://192.168.0.6/svn/repo/config-repousername: usernamepassword: passworddefault-label: trunkprofiles:active: subversionapplication:name: spring-cloud-config-server
复制代码
和git版本稍有区别,需要显示声明subversion.
3、启动类 启动类没有变化,添加@EnableConfigServer激活对配置中心的支持
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}
复制代码
4、测试 服务端测试
访问:http:/ /localhost:8001/neo-config-dev.properties,返回:neo.hello: hello im dev,说明服务端可以正常读取到svn代码库中的配置信息。修改配置文件neo-config-dev.properties中配置信息为:neo.hello=hello im dev update,再次在浏览器访问http:/ /localhost:8001/neo-config-dev.properties,返回:neo.hello: hello im dev update。说明server端会自动读取最新提交的内容
客户端测试
客户端直接使用上一篇示例项目spring-cloud-config-client来测试,配置基本不用变动。启动项目后访问:http:/ /localhost:8002/hello,返回:hello im dev update说明已经正确的从server端获取到了参数。同样修改svn配置并提交,再次访问http://localhost:8002/hello``依然获取的是旧的信息,和git版本的问题一样。
refresh 现在来解决上一篇的遗留问题,这个问题在svn版本中依然存在。Spring Cloud Config分服务端和客户端,服务端负责将git(svn)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置。客户端如何去主动获取新的配置信息呢,springcloud已经给我们提供了解决方案,每个客户端通过POST方法触发各自的/refresh。
修改spring-cloud-config-client项目已到达可以refresh的功能。
1、添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
复制代码
增加了spring-boot-starter-actuator包,spring-boot-starter-actuator是一套监控的功能,可以监控程序在运行时状态,其中就包括/refresh的功能。
2、 开启更新机制 需要给加载变量的类上面加载@RefreshScope,在客户端执行/refresh的时候就会更新此类下面的变量值。
@RestController
@RefreshScope // 使用该注解的类,会在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。
class HelloController {@Value("${neo.hello}")private String hello;@RequestMapping("/hello")public String from() {return this.hello;}
}
复制代码
3、测试 springboot 1.5.X 以上默认开通了安全认证,所以需要在配置文件application.properties添加以下配置
management.security.enabled=false OK 这样就改造完了,以post请求的方式来访问http:/ /localhost:8002/refresh 就会更新修改后的配置文件。
我们再次来测试,首先访问http:/ /localhost:8002/hello,返回:hello im dev,我将库中的值修改为hello im dev update。在win上面打开cmd执行curl -X POST http:/ /localhost:8002/refresh,返回["neo.hello"]说明已经更新了neo.hello的值。我们再次访问http:/ /localhost:8002/hello,返回:hello im dev update,客户端已经得到了最新的值。
每次手动刷新客户端也很麻烦,有没有什么办法只要提交代码就自动调用客户端来更新呢,github的webhook是一个好的办法。
4、webhook WebHook是当某个事件发生时,通过发送http post请求的方式来通知信息接收方。Webhook来监测你在Github.com上的各种事件,最常见的莫过于push事件。如果你设置了一个监测push事件的Webhook,那么每当你的这个项目有了任何提交,这个Webhook都会被触发,这时Github就会发送一个HTTP POST请求到你配置好的地址。
如此一来,你就可以通过这种方式去自动完成一些重复性工作,比如,你可以用Webhook来自动触发一些持续集成(CI)工具的运作,比如Travis CI;又或者是通过 Webhook 去部署你的线上服务器。下图就是github上面的webhook配置。
Payload URL :触发后回调的URL Content type :数据格式,两种一般使用json Secret :用作给POST的body加密的字符串。采用HMAC算法 events :触发的事件列表。 events事件类型 描述 push 仓库有push时触发。默认事件 create 当有分支或标签被创建时触发 delete 当有分支或标签被删除时触发 svn也有类似的hook机制,每次提交后会触发post-commit脚本,我们可以在这里写一些post请求。 这样我们就可以利用hook的机制去触发客户端的更新,但是当客户端越来越多的时候hook支持的已经不够优雅,另外每次增加客户端都需要改动hook也是不现实的。其实Spring Cloud给了我们更好解决方案,后面文章来介绍。
技术架构图如下: 资料和源码来源
转载于:https://juejin.im/post/5c00e3d9e51d451a2e377ba1
java B2B2C电子商务平台分析之八--配置中心svn示例和refresh相关推荐
- springcloud(七):配置中心svn示例和refresh
上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...
- java B2B2C电子商务平台分析之十一------配置中心和消息总线
Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其他的消息指令.Spring bus的一个核心思想是通过 ...
- java B2B2C源码电子商务平台-配置中心svn示例和refresh
国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心.需要了解电子商务平台源码可加企鹅邱邱 一零三八七七四六二六 svn版本 ...
- java B2B2C电子商务平台分析之十五-----EureKa服务注册与发现
什么是服务发现与服务注册 简单的来说就是一个微服务要调用另一个微服务,就必须知道这个微服务的地址及端口信息.采用一张注册表,注册上线可用的微服务及相关信息,微服务则从注册表上查找所需的其它微服务的相关 ...
- SpringCloud微服务云架构构建B2B2C电子商务平台简介
Spring Cloud是一系列框架的有序集合.利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现.注册.配置中心.消息总线.负载均衡.断路器.数据监控等(这里只简单的列了 ...
- springboot微服务 java b2b2c电子商务系统(一)服务的注册与发现(Eureka)
一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...
- 基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...
- b2b2c 电子商务平台涉及的技术、运营方案
一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...
- SpringCloud+SpringBoot b2b2c 电子商务平台涉及的技术、运营方案
一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...
最新文章
- MySQL数据库中的事务(四大特性)
- [转载]深入理解JavaScript闭包(closure)
- 如何用Mybatis分库分表
- 会计电算化的重要物质基础计算机和,湖北工业大学工程技术学院会计电算化管理办法...
- BZOJ 4517 组合数+错排
- 【模板】在build中配置resources来防止我们资源导出失败的问题
- linux终端模拟器app下载,3C终端模拟器app下载-3C终端模拟器v0.9最新版下载 - 91手游网...
- mysql 随机取不重复数据_随机生成不重复数字,想做Excel抽奖器你必须掌握!
- HandlerThread使用
- 时间序列深度学习:状态 LSTM 模型预测太阳黑子(上)
- skywalking 6.1 简明指南
- Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
- ST-Link 驱动安装
- TP-LINK校招系统测试岗面经汇总
- 旋转矩阵是正交矩阵与伴随性质的证明
- oracle升序和降序同时存在,oracle升序排序 oracle升序和降序
- 浏览器提示网站链接不安全,证书过期了
- 复盘618:数字狂欢背后透露了哪些隐藏信号?
- HTML5系列代码:设置滚动条
- 嵌入式系统实用电源管理技术应该如何选择?
热门文章
- linux kernel 进程管理,Linux内核 | 进程管理
- mysql gno( )_MySql笔记(一)
- Python的regex模块——更强大的正则表达式引擎
- 正则表达式中(?:)的巨大作用
- vim查看cmd打印的trick
- lamp mysql脚本_初次尝试利用脚本自动编译搭建LAMP-----Mysql
- phpcms调用栏目描述_phpcms标签整理_当前栏目调用
- python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...
- 洛谷出现RE(re)的情况
- 第二、三章:信息系统项目管理基础与立项管理-章节真题