springCloud的zuul基於config和github實現熱更新


 

核心思想是配置文件修改后不需要重啟服務就實現可用;
 
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 =  http://localhost:8769/
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 =  http://www.baidu.com

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的日志
表示已經成功,我們現在再來調一下路由配置的地址

大功告成;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM