java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
社交電商平臺(tái)源碼請加企鵝求求:一零三八七七四六二六。filter的作用和生命周期
由filter工作流程點(diǎn),可以知道filter有著非常重要的作用,在“pre”類型的過濾器可以做參數(shù)校驗(yàn)、權(quán)限校驗(yàn)、流量監(jiān)控、日志輸出、協(xié)議轉(zhuǎn)換等,在“post”類型的過濾器中可以做響應(yīng)內(nèi)容、響應(yīng)頭的修改,日志的輸出,流量監(jiān)控等。首先需要弄清一點(diǎn)為什么需要網(wǎng)關(guān)這一層,這就不得不說下filter的作用了。
作用
當(dāng)我們有很多個(gè)服務(wù)時(shí),比如下圖中的user-service、goods-service、sales-service等服務(wù),客戶端請求各個(gè)服務(wù)的Api時(shí),每個(gè)服務(wù)都需要做相同的事情,比如鑒權(quán)、限流、日志輸出等。
對于這樣重復(fù)的工作,有沒有辦法做的更好,答案是肯定的。在微服務(wù)的上一層加一個(gè)全局的權(quán)限控制、限流、日志輸出的Api Gatewat服務(wù),然后再將請求轉(zhuǎn)發(fā)到具體的業(yè)務(wù)服務(wù)層。這個(gè)Api Gateway服務(wù)就是起到一個(gè)服務(wù)邊界的作用,外接的請求訪問系統(tǒng),必須先通過網(wǎng)關(guān)層。
生命周期
Spring Cloud Gateway同zuul類似,有“pre”和“post”兩種方式的filter。客戶端的請求先經(jīng)過“pre”類型的filter,然后將請求轉(zhuǎn)發(fā)到具體的業(yè)務(wù)服務(wù),比如上圖中的user-service,收到業(yè)務(wù)服務(wù)的響應(yīng)之后,再經(jīng)過“post”類型的filter處理,最后返回響應(yīng)到客戶端。
與zuul不同的是,filter除了分為“pre”和“post”兩種方式的filter外,在Spring Cloud Gateway中,filter從作用范圍可分為另外兩種,一種是針對于單個(gè)路由的gateway filter,它在配置文件中的寫法同predict類似;另外一種是針對于所有路由的global gateway filer,二者區(qū)別如下:GatewayFilter : 需要通過spring.cloud.routes.filters 配置在具體路由下,只作用在當(dāng)前路由上或通過spring.cloud.default-filters配置在全局,作用在所有路由上
GlobalFilter : 全局過濾器,不需要在配置文件中配置,作用在所有的路由上,最終通過GatewayFilterAdapter包裝成GatewayFilterChain可識(shí)別的過濾器,它為請求業(yè)務(wù)以及路由的URI轉(zhuǎn)換為真實(shí)業(yè)務(wù)服務(wù)的請求地址的核心過濾器,不需要配置,系統(tǒng)初始化時(shí)加載,并作用在每個(gè)路由上。
gateway filter
過濾器允許以某種方式修改傳入的HTTP請求或傳出的HTTP響應(yīng)。過濾器可以限定作用在某些特定請求路徑上。 Spring Cloud Gateway包含許多內(nèi)置的GatewayFilter工廠。
GatewayFilter工廠同上一篇介紹的Predicate工廠類似,都是在配置文件application.yml中配置,遵循了約定大于配置的思想,只需要在配置文件配置GatewayFilter Factory的名稱,而不需要寫全部的類名,比如AddRequestHeaderGatewayFilterFactory只需要在配置文件中寫AddRequestHeader,而不是全部類名。在配置文件中配置的GatewayFilter Factory最終都會(huì)相應(yīng)的過濾器工廠類處理。
Spring Cloud Gateway 內(nèi)置的過濾器工廠一覽表如下:
Spring Cloud Gateway框架內(nèi)置的GlobalFilter如下:
本篇文章講述了Spring Cloud Gateway中的過濾器,包括GatewayFilter和GlobalFilter,有很多內(nèi)置的過濾器并沒有講述到,比如限流過濾器,這個(gè)我覺得是比較重要和大家關(guān)注的過濾器,將在之后的文章講述。
轉(zhuǎn)載于:https://juejin.im/post/5cd235c0f265da035d0c9309
總結(jié)
以上是生活随笔為你收集整理的java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】使用这些 CSS 属性选择器来提高
- 下一篇: 微信/QQ 中已停止访问该网页的处理办法