最近在看項目中的SpringCloud的網關Gateway的代碼,發現裏面的過濾器以及各種網關代理寫法,有點無法下手,便打算從官網方面找些資料來加深瞭解,之前是有寫過demo,但是理解不算深!
簡介
Spring Cloud GateWay它是提供了一個建立在Spring生態系統之上的API網關,包括:Spring 5、Spring Boot 2和project Reactor。
旨在提供一種簡單而有效的方法來路由到api,併爲它們提供跨領域的關注點,例如:安全性、監控/度量和彈性。
詞彙
Route
路由,網關的基本組成模塊,它由ID、目標代理的URI、斷言集合和過濾器集合所組成,可以先看一下大致的結構:
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates: #對以下斷言集合屬性做控制
- name: Cookie
args:
name: mycookie
regexp: mycookievalue
- Path=/api/pvs/** #此等路徑將視爲provider應用
filters:
- StripPrefix=1 #截取掉/api,實際-Path就爲 /pvs/
# 限流過濾器,使用gateway內置令牌算法
- name: RequestRateLimiter
args:
# 令牌桶每秒填充平均速率,即行等價於允許用戶每秒處理多少個請求平均數
redis-rate-limiter.replenishRate: 10
# 令牌桶的容量,允許在一秒鐘內完成的最大請求數
redis-rate-limiter.burstCapacity: 20
# 用於限流的鍵的解析器的 Bean 對象的名字。它使用 SpEL 表達式根據#{@beanName}從 Spring 容器中獲取 Bean 對象。
key-resolver: "#{@apiKeyResolver}"