博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springCloud的zuul基于config和github实现热更新
阅读量:5295 次
发布时间:2019-06-14

本文共 2705 字,大约阅读时间需要 9 分钟。

 

核心思想是配置文件修改后不需要重启服务就实现可用;
 
springboot 2.0.1.RELEASE
springcloud Finchley.RELEASE
 

1.搭建config-server工程

1.1加入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

1.2编辑application.yml配置文件

server:
  port: 8769
spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          uri:                                           # 配置git仓库的地址
          search-paths:              # git仓库地址下的相对地址,可以配置多个,用,分割。
          username:                              # git仓库的账号
          password:
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,info    # 暴露的服务接口

1.3添加启动类

1.4测试运行

2.搭建config-client-zuul工程

2.1添加依赖

2.1.1

要加入config-client和zuul的依赖

2.1.2

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</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-starter-netflix-zuul</artifactId>
</dependency>

2.2编辑配置文件

2.2.1bootstrap.properties

spring.cloud.config.name = spring-cloud-config
spring.cloud.config.profile = dev
spring.cloud.config.uri = 
spring.cloud.config.label = master
spring.application.name = api-gateway
#bootstrap.properties主要是配置server的连接信息

2.2.2application.yml

management:
  endpoints:
    web:
      exposure:
        include: refresh
#这个配置是暴露刷新接口;
注: bootstrap文件的执行优先级要高于application;我们需要把config的连接信息放到bootstrap中;

2.3添加启动类

2.4在GitHub中编辑文件

2.4.1创建一个config-repo文件夹

里面可以根据不同的环境放不同的配置文件

2.4.2创建spring-cloud-config-dev.yml

编辑内容:zuul.routes.spring.url = 

2.5测试运行

 

2.6测试访问路由

2.6.1

在浏览器输入
会进入到路由配置的地址:

 

2.6.2修改配置文件路由配置的地址

不重启服务,我们再请求一下

 

可以看到,并没有发生任何的改变;
现在我们请求一下刷新接口:

 

再请求一次配置的路由地址:

 

现在证明路由是可以刷新的;当然,这并不是我想要的结果,我们想要实现的是不用手动调接口刷新,那么我们就要借助外部第三方的工具来帮助我们刷新;

3.配置GitHub的webhooks实现配置文件提交后自动调刷新配置接口

3.1下载第三方软件,实现模拟域名

下载并解压,然后双击打开
输入命令 ngrok http 端口 会得到一个模拟的域名

3.2配置webhooks

打开settings的webhooks

 

配置上我们的刷新接口地址,每次文件提交之后,webhooks会调用这个刷新接口;
注:本机默认地址是127.0.0.1,Mac地址GitHub也是访问不到的;我们需要借助第三方软件模拟域名,达到允许外部系统访问;

3.3修改文件测试接口是否刷新成功

下面我们看一下webhooks的日志
表示已经成功,我们现在再来调一下路由配置的地址

大功告成;
 

转载于:https://www.cnblogs.com/han-liu/p/11103758.html

你可能感兴趣的文章
shell 管道和tee使用时获取前面命令返回值
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
[TypeScript] Understanding Generics with RxJS
查看>>
一、基础篇--1.3进程和线程-基本概念
查看>>
Linux kernel ‘ioapic_read_indirect’函数拒绝服务漏洞
查看>>
WordPress GRAND FlAGallery插件“s”跨站脚本漏洞
查看>>
如何组织一个高效的开发团队
查看>>
.NET多语言切换,配置
查看>>
Python学习之路_day_03(逻辑运算与数据类型)
查看>>
ACM模板——次短路及K短路
查看>>
Internet History, Technology and Security (Week5.2)
查看>>
20个很有用的PHP类库
查看>>
java 中间 final修饰符
查看>>
UVa156 Ananagrams(映射map)
查看>>
数据库三大范式,我的理解
查看>>
fltk demo
查看>>
10分钟物联网设备接入阿里云IoT平台
查看>>
Delphi 的 TMS 控件安装方法
查看>>
常见跳转指令和机器码对应关系
查看>>