国内很多公司都使用的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相关推荐

  1. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

  2. java B2B2C电子商务平台分析之十一------配置中心和消息总线

    Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其他的消息指令.Spring bus的一个核心思想是通过 ...

  3. java B2B2C源码电子商务平台-配置中心svn示例和refresh

    国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心.需要了解电子商务平台源码可加企鹅邱邱 一零三八七七四六二六 svn版本 ...

  4. java B2B2C电子商务平台分析之十五-----EureKa服务注册与发现

    什么是服务发现与服务注册 简单的来说就是一个微服务要调用另一个微服务,就必须知道这个微服务的地址及端口信息.采用一张注册表,注册上线可用的微服务及相关信息,微服务则从注册表上查找所需的其它微服务的相关 ...

  5. SpringCloud微服务云架构构建B2B2C电子商务平台简介

    Spring Cloud是一系列框架的有序集合.利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现.注册.配置中心.消息总线.负载均衡.断路器.数据监控等(这里只简单的列了 ...

  6. springboot微服务 java b2b2c电子商务系统(一)服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  7. 基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中药材电子商务平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  8. b2b2c 电子商务平台涉及的技术、运营方案

    一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...

  9. SpringCloud+SpringBoot b2b2c 电子商务平台涉及的技术、运营方案

    一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...

最新文章

  1. MySQL数据库中的事务(四大特性)
  2. [转载]深入理解JavaScript闭包(closure)
  3. 如何用Mybatis分库分表
  4. 会计电算化的重要物质基础计算机和,湖北工业大学工程技术学院会计电算化管理办法...
  5. BZOJ 4517 组合数+错排
  6. 【模板】在build中配置resources来防止我们资源导出失败的问题
  7. linux终端模拟器app下载,3C终端模拟器app下载-3C终端模拟器v0.9最新版下载 - 91手游网...
  8. mysql 随机取不重复数据_随机生成不重复数字,想做Excel抽奖器你必须掌握!
  9. HandlerThread使用
  10. 时间序列深度学习:状态 LSTM 模型预测太阳黑子(上)
  11. skywalking 6.1 简明指南
  12. Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
  13. ST-Link 驱动安装
  14. TP-LINK校招系统测试岗面经汇总
  15. 旋转矩阵是正交矩阵与伴随性质的证明
  16. oracle升序和降序同时存在,oracle升序排序 oracle升序和降序
  17. 浏览器提示网站链接不安全,证书过期了
  18. 复盘618:数字狂欢背后透露了哪些隐藏信号?
  19. HTML5系列代码:设置滚动条
  20. 嵌入式系统实用电源管理技术应该如何选择?

热门文章

  1. linux kernel 进程管理,Linux内核 | 进程管理
  2. mysql gno( )_MySql笔记(一)
  3. Python的regex模块——更强大的正则表达式引擎
  4. 正则表达式中(?:)的巨大作用
  5. vim查看cmd打印的trick
  6. lamp mysql脚本_初次尝试利用脚本自动编译搭建LAMP-----Mysql
  7. phpcms调用栏目描述_phpcms标签整理_当前栏目调用
  8. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...
  9. 洛谷出现RE(re)的情况
  10. 第二、三章:信息系统项目管理基础与立项管理-章节真题