spring_cloud之網關(Gateway)


一、Gateway 網關簡介

  •   spring cloud Gateway 是spring 基於spring 5.0 spring boot 2.0、Project Reactor等技術開發
  •   spring cloud Gateway 基於filter鏈提供網關基本功能:安全、監控/埋點、限流等
  •   spring cloud Gateway 為微服務架構提供簡單、有效的統一api路由器管理方式。
  •   spring cloud GateWay 代替 Netflix Zuul 的解決方案。 Netflix Zuul 目前處於維護狀態,無新功能的開發

  核心:過濾和路由

  Gateway組件核心是一系列的過濾器,通過這些過濾器將客戶端的請求轉發到對應的微服務中,是加在整個微服務最前沿的防火牆和代理器,隱藏微服務ip信息,從而加強安全保護。Gateway本身就是一個微服務,需要注冊到Eureka中。

  添加網關Gateway微服務架構圖:

  

 

 

   不管使來自客戶端的請求,還是服務內部調用都可通過網關,然后在通過網關實現鑒權、動態路由等操作。網關就是統一入口。

  核心概念:

  • 路由(route) :路由信息組成。由一個Id、一個目的URL、一組斷言工廠、一組filter組成。如果路由器斷言為真。說明請求Url和配置路由匹配。
  • 斷言(predicate):Gateway中的斷言函數輸入類型是spring 5.0 框架中的 serverWebExchange。Gateway中的斷言函數允許開發者自定義匹配來自 http request 中的任何信息。參數和請求頭。
  • 過濾器(filter): 一個標准的spring WebFilter.Gateway中的filter 分為2種類型。分別是 Gateway Filter 、Global Filter。過濾器會將請求和響應進行修改處理。

二、簡單入門

  1、所需依賴pom.xml 需要注冊到eureke 注冊中心所以添加Eureka client 依賴 

1 <dependency>
2     <groupId>org.springframework.cloud</groupId>
3     <artifactId>spring-cloud-starter-gateway</artifactId>
4 </dependency>
5 
6 <dependency>
7     <groupId>org.springframework.cloud</groupId>
8     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
9 </dependency>

 

   2、啟動添加注解  @EnableDiscoveryClient  

   3、配置文件application.yml 添加路由配置 、將請求到網關服務地址中包含 /provider/ 的請求路由轉發的 192.168.188.10:9091 服務上 

 1 spring:
 2   cloud:
 3     gateway:
 4       routes:
 5           # 路由Id
 6         - id: springcloud-eureka-provider-routes
 7           #代理服務器地址
 8           uri: http://192.168.188.10:9091
 9           #斷言規則
10           predicates:
11             - Path=/provider/**

 

路由地址寫死不合理,可spring cloud Gateway 中通過配置動態路由。詳情見:面向服務路由

三、面向服務路由 將ip地址 使用lb://服務名代替 Gateway根據服務名通過ribbon算法獲取服務地址  ,lb:后的服務名必須在Eureka中注冊才能使用

 1 spring: 
 2   cloud:
 3     gateway:
 4       routes:
 5           # 路由Id
 6         - id: springcloud-eureka-provider-routes
 7           #代理服務器地址
 8           uri: lb://springcloud-eureka-provider  9           #斷言規則
10           predicates:
11             - Path=/provider/**

log 分析 

四、 路由前綴處理

  1、前綴的添加與去除

    

    客戶端請求地址與微服務請求地址不一致時,可通過配置路徑過濾器實現路徑前綴的添加個去除

  添加前綴配置:關鍵字:PrefixPath  

 1 spring:
 2   cloud:
 3     gateway:
 4       routes:
 5           # 路由Id
 6         - id: springcloud-eureka-provider-routes
 7           #代理服務器地址
 8           uri: lb://springcloud-eureka-provider
 9           #斷言規則
10           predicates:
11             - Path=/**
12           filters:
13             - PrefixPath=/provider

 

   去除前綴配置: 關鍵:StripPrefix  

spring:
  cloud:
    gateway:
      routes:
          # 路由Id
        - id: springcloud-eureka-provider-routes
          #代理服務器地址
          uri: lb://springcloud-eureka-provider
          #斷言規則
          predicates:
            #- Path=/**
            - Path=/api/provider/**
          filters:         
          #配置去除前綴 1:標識1個路徑 2:標識2個路徑 以此類推
            - StripPrefix=1

 


免責聲明!

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



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