国内很多公司都使用的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给了我们更好解决方案,后面文章来介绍。java B2B2C源码电子商务平台

转载于:https://juejin.im/post/5c6a1743f265da2d9b5e0715

java B2B2C源码电子商务平台-配置中心svn示例和refresh相关推荐

  1. java B2B2C源码电子商务平台 -SpringCloud配置中心高可用搭建

    本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  2. java B2B2C源码电子商务平台 - Zuul回退机制

    1.在一些不稳定因素导致路由后面的微服务宕机或者无响应时,zuul 就会累计大量的请求,久而久之基本上所有的请求都会超时,但是请求链接数却不断的在增加,不断的占用资源池不能结束知道超时消耗殆尽导致zu ...

  3. java B2B2C源码电子商务平台-基于Consul的分布式锁实现

    分布式锁实现 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码:壹零叁八柒柒肆六二六 基于Consul的分布式锁主要利用Key/Value存储API中的ac ...

  4. java B2B2C源码电子商务平台 -commonservice-config配置服务搭建

    2019独角兽企业重金招聘Python工程师标准>>> Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在 ...

  5. java B2B2C源码电子商务平台 ---搭建Eureka注册中心

    一 创建一个Spring Boot工程,命名为eureka-server,并在pom.xml中引入必要的依赖,代码如下.愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 <paren ...

  6. java B2B2C源码电子商务平台 --zuul跨域访问问题

    springcloud微服务框架,是一组组件,eureka服务注册中心,zuul路由等等 一般都是在zuul上配好url路径映射到各个服务,所以对外都是访问zuul服务的端口,但是在web服务设置了跨 ...

  7. java B2B2C源码电子商务平台 -SpringCloud服务相互调用RestTemplate

    Springcloud中的服务消费,就需要我们服务之前相互发请求了.之前我们都是想着用http请求相关的交互,用的比较多的是apache httpcomponents ,现在springboot提供了 ...

  8. java B2B2C源码电子商务平台

    springCloud是基于SpringBoot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等组 ...

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

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

最新文章

  1. PTA基础编程题目集-6-8 简单阶乘计算
  2. 移动界面控件Essential Studio for Mobile MVC网格控件解析
  3. 转--Linux邮件服务器软件比较
  4. C51 汇编指令英文全称
  5. html图片postmultipart,sendmail-MIMEText-MIMEImage-MIMEMultipart.py——发送带图片的HTML格式报表...
  6. Java:JDK安装
  7. Keil MDK下载程序时的相关设置
  8. Exchange 2007 前端 IIS 内存占用过高
  9. 关于查询界面渲染问题
  10. python房屋租赁系统的设计与实现_毕业设计---在线房屋租赁系统的设计与实现.doc...
  11. html磁贴模板,文本磁贴模板(列表文件夹)(HTML)
  12. 2021.3.30-Robocup 2D学习日志
  13. 小米r2d做nas_零基础也可以打造智能家居,利用群晖docker将小米全家桶接入ios Homekit...
  14. 5.1劳动节|致敬每一位数字安全劳动者
  15. CentOS下删除和安装JDK
  16. RabbitMQ 安装使用,Centos系统安装RabbitMQ、Docker安装启动RabbitMQ
  17. 网易免费域名邮箱设置foxmail客户端登录
  18. 「技术趋势」软件开发人员应该了解的2021年技术趋势
  19. 基于c语言测井原始数据编程,C语言对数据库文件的信息压缩
  20. 数据处理之文本分词、MMSEG分词工具、斯坦福NLTK分词工具

热门文章

  1. 架构师的 36 项修炼第02讲:架构核心技术之分布式缓存(上)
  2. 开源新手引导框架,支持TypeScript
  3. C语言 十六进制与ascii码互转
  4. 面试必考的:并发和并行有什么区别?
  5. 百度知道怎么引流减肥粉?想要打破粉丝瓶颈,必须要借助一个有力的平台
  6. 165体重_女性身高155cm—165cm,体重多少合适?有个实情告诉你,别瞎减肥
  7. 刘启轩-毫米波雷达的特性及应用
  8. 超十万字_超详细SSM整合实践_手动实现权限管理
  9. 2022最详细,最新的 Win11/WIN10 安装CUDA11.2和cuDNN(必坑之作)完美教程
  10. 兀键和6键怎么判断_σ键、π键和大π键