成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微服務平臺之網關架構與應用

開發 前端
API 網關出現的原因是微服務架構的出現,不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務的接口才能完成一個業務需求,如果讓客戶端直接與各個微服務通信,會有以下的問題。

[[328876]]

 前言:

API 網關出現的原因是微服務架構的出現,不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務的接口才能完成一個業務需求,如果讓客戶端直接與各個微服務通信,會有以下的問題:

1、客戶端會多次請求不同的微服務,增加了客戶端的復雜性。

2、存在跨域請求,在一定場景下處理相對復雜。

3、認證復雜,每個服務都需要獨立認證。

4、難以重構,隨著項目的迭代,可能需要重新劃分微服務。例如,可能將多個服務合并成一個或者將一個服務拆分成多個。如果客戶端直接與微服務通信,那么重構將會很難實施。

5、某些微服務可能使用了防火墻 / 瀏覽器不友好的協議,直接訪問會有一定的困難。

以上這些問題可以借助 API 網關解決。API 網關是介于客戶端和服務器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,網關的角色是作為一個 API 架構,用來保護、增強和控制對于 API 服務的訪問。

目錄:

1、API網關的定義

2、為什么選擇Gateway

3、部分Predicate的實現

4、普元EOS 8 網關架構

5、普元EOS 8 網關應用

6、未來展望

1.API網關的定義

 

 

網關的角色是作為一個 API 架構,用來保護、增強和控制對于 API 服務的訪問。API 網關是一個處于應用程序或服務(提供 REST API 接口服務)之前的系統,用來管理授權、訪問控制和流量限制等,這樣 REST API 接口服務就被 API 網關保護起來,對所有的調用者透明。因此,隱藏在 API 網關后面的業務系統就可以專注于創建和管理服務,而不用去處理這些策略性的基礎設施。

 

 

網關的職能

  1. 請求接入:作為所有API接口服務請求的接入點。
  2. 業務聚合:作為所有后端業務服務的聚合點。
  3. 中介策略:實現安全,驗證,路由,過濾等策略。
  4. 統一管理:對所有API服務和策略進行統一管理。

主要功能

主要功能大致分為穩定與安全,提供更好的服務兩方面:

穩定與安全:

  1. 全局性流控
  2. 日志統計
  3. 防止SQL注入
  4. 防止Web攻擊
  5. 屏蔽工具掃描
  6. 黑白IP名單
  7. 證書/加密處理

提供更好的服務:

  1. 服務級別流控
  2. 服務降級與熔斷
  3. 路由與負載均衡,灰度策略
  4. 服務過濾,聚合發現
  5. 權限驗證與用戶等級策略
  6. 業務規則與參數校驗
  7. 多級緩存策略

2.為什么選擇Gateway

Spring Cloud Gateway 可以看做是一個 Zuul 1.x 的升級版和代替品,比 Zuul 2 更早的使用 Netty 實現異步 IO,從而實現了一個簡單、比 Zuul 1.x 更高效的、與 Spring Cloud 緊密配合的 API 網關。

Spring Cloud Gateway 里明確的區分了 Router 和 Filter,并且一個很大的特點是內置了非常多的開箱即用功能,并且都可以通過 SpringBoot 配置或者手工編碼鏈式調用來使用。

比如內置了 10 種 Router,使得我們可以直接配置一下就可以隨心所欲的根據 Header、或者 Path、或者 Host、或者 Query 來做路由。

比如區分了一般的 Filter 和全局 Filter,內置了 20 種 Filter 和 9 種全局 Filter,也都可以直接用。當然自定義 Filter 也非常方便。

幾個重要概念:

路由:Gateway的基礎構建模塊。它包括一個ID,一個目標URL,一個斷言集合和一個過濾器集合。如果斷言判斷為真,則路由匹配。

斷言:這是Java8的新增功能,輸入的類型為Spring框架的ServerWebExchange。它可以匹配HTTP請求中的任何東西,比如:請求頭或者參數。

過濾器:是Spring框架的GatewayFilter,請求和響應都可以被Filter修改。

3.部分Predicate的實現

 

 

 

 

Predicate 來源于 Java 8,是 Java 8 中引入的一個函數,Predicate 接受一個輸入參數,返回一個布爾值結果。該接口包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(比如:與,或,非)。可以用于接口請求參數校驗、判斷新老數據是否有變化需要進行更新操作。

在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性實現了各種路由匹配規則,有通過 Header、請求參數等不同的條件來進行作為條件匹配到對應的路由。

這邊就列舉幾個匹配的轉發實例:

1、通過時間匹配

Predicate 支持設置一個時間,在請求進行轉發的時候,可以通過判斷在這個時間之前或者之后進行轉發。比如我們現在設置只有在 2020 年 1 月 1 日才會轉發到我的網站,在這之前不進行轉發,我就可以這樣配置:

 

 

 

 

Spring 是通過 ZonedDateTime 來對時間進行的對比,ZonedDateTime 是 Java 8 中日期時間功能里,用于表示帶時區的日期與時間信息的類,ZonedDateTime 支持通過時區來設置時間,中國的時區是:Asia/Shanghai。

After Route Predicate 是指在這個時間之后的請求都轉發到目標地址。上面的示例是指,請求時間在 2020 年 1 月1 日 6 點之后的所有請求都轉發到地址http://www.primeton.com。+08:00是指時間和 UTC 時間相差八個小時,時間地區為Asia/Shanghai。添加完路由規則之后,訪問地址http://網關IP:PORT會自動轉發到http:// www.primeton.com。

Before Route Predicate 剛好相反,在某個時間之前的請求的請求都進行轉發。我們把上面路由規則中的 After 改為 Before,如下:

 

 

就表示在這個時間之前可以進行路由,在這時間之后停止路由,修改完之后重啟項目再次訪問地址http://網關IP:PORT,頁面會報 404 沒有找到地址。

 

 

在時間之前或者之后外,Gateway 還支持限制路由請求在某一個時間段范圍內,可以使用 Between Route Predicate 來實現:

 

 

 

 

2、通過 Cookie 匹配

Cookie Route Predicate 可以接收兩個參數,一個是 Cookie name , 一個是正則表達式,路由規則會通過獲取對應的 Cookie name 值和正則表達式去匹配,如果匹配上就會執行路由,如果沒有匹配上則不執行。

 

 

 

 

使用 curl 測試,命令行輸入:

 

 

 

 

則會返回頁面代碼,如果去掉--cookie "primeton=eos.primeton",后臺會提示 404 錯誤

Header Route Predicate 和 Cookie Route Predicate 一樣,也是接收 2 個參數,一個 header 中屬性名稱和一個正則表達式,這個屬性值和正則表達式匹配則執行。

 

 

使用 curl 測試,命令行輸入:

 

 

則返回頁面代碼證明匹配成功。將參數-H "X-Request-Id:88888"改為-H "X-Request-Id:zero"再次執行時返回 404 證明沒有匹配。

 

 

3、通過 Host 匹配

Host Route Predicate 接收一組參數,一組匹配的域名列表,這個模板是一個 ant 分隔的模板,用.號作為分隔符。它通過參數中的主機地址作為匹配規則。

 

 

 

 

使用 curl 測試,命令行輸入:

 

 

經測試以上兩種 host 均可匹配到 host_route 路由,去掉 host 參數則會報 404 錯誤。

 

4.普元EOS 8網關架構

 

 

EOS 8網關架構圖

1. 在微服務治理平臺中, 一個系統將部署一套網關。系統內部應用的前端訪問后端, 或者其它系統的應用需要訪問此系統內的應用提供的接口, 請求必須走網關。

2. 網關對外提供治理數據的 rest 接口, 治理平臺通過此接口將治理數據發送至網關。

3. 網關可以部署多個對等實例, 以擴充其性能。

4. 網關收到治理數據之后, 由統一存儲接口保持至持久存儲之中,然后由存儲的通知機制,通知所有網關實例。

5. 為了提升性能,避免頻繁從持久存儲中查詢數據,網關內部設計了基于內存的高速緩存。它們在網關啟動時,將自動從持久存儲加載治理數據。

6. 網關緩存也支持通過懶加載的方式, 按需加載所需治理數據。

7. 經歷各filter之后, 請求發往應用的哪些實例, 將在 LBPredicate 之中決定, 它會根據請求頭中帶的應用實例組編碼對應用實例進行過濾。

8. EOS8的網關將不在和Coframe共用一個持久化存儲,轉而使用應用自己本身的存儲,大大降低接入成本。

9. 認證業務插件化改造,只需實現網關提供的認證接口,即可快速完成認證和鑒權,用戶也可以逐步實現按需擴展的需求。

EOS 8網關設計要點

1. EOS8的網關將不在和Coframe共用一個持久化存儲,轉而使用應用自己本身的存儲,大大降低接入成本。

2. 認證業務插件化改造,只需實現網關提供的認證接口,即可快速完成認證和鑒權,用戶也可以逐步實現按需擴展的需求。

實現細節

1. 創建插件項目

項目名稱格式建議以gateway-plugin- 開頭, 如 gateway-plugin-handle-eos8

為了統一第三方jar包依賴, 防止版本沖突, 項目父pom必須為網關的pom

 

 

 

 

2. 實現gateway-core中的UserService接口

 

 

 

 

參數說明:

 

 

 

 

3. 插件構建與部署

在插件的pom中, 需要添加構建相關的配置

 

 

 

 

網關的部署介質結構如下:

EOS_Microservices_API_Gateway/

├── bin

│ ├── shutdown.sh

│ └── startup.sh

├── config

│ ├── application.yml

│ └── logback-spring.xml

├── gateway-boot-5.0.0-GA-SNAPSHOT.jar

├── lib

│ └── plugins

│ └── gateway-plugin-handle-eos8 -8.1.0-LA-SNAPSHOT.jar

└── logs

├── eos-dap-gateway

│ └── eos-dap-gateway.pid

├── eos-dap-gateway.out

├── gateway.log

└── gateway-trace.log

插件構建成jar包之后, 需要將其復制至lib/plugins目錄之下, 然后重啟網關。

5.普元EOS 8網關應用

 

 

 

 

為了方便用戶更好的理解和使用我們的EOS8網關,在EOS8的Governor平臺中,提供了一整套的可視化操作。

主要分為網關詳情,白名單配置,API發布和授權(針對跨系統訪問),路由,日志,統計查詢,Top查詢等功能

1. 白名單配置

 

網關上線后,如果開啟了token有效性驗證,根據自己的業務需要可以配置放行的白名單(配置了路由轉發的情況下,白名單的請求接口也需要添加對應的url前綴)

2. API發布與授權

 

 

 

 

同系統的網關調用,只需要請求頭中的X-EOS-SourceSysKey與當前系統憑證一致即可,并不需要進行API發布與授權

當本系統的中的接口需要被其他系統調用的時候,就需要用到API發布和API授權功能

  • Governor會自動讀取系統內所有對外的EOS服務接口,點擊已發布后,進入API授權功能
  • 新增指定的訂閱者后,將剛發發布的接口進行授權,即可完成API授權功能
  • 在調用者一邊,創建一個實體類實現SDKApiSubscriberProvider接口即可

 

 

 

 

3.路由配置

 

 

 

 

在路由配置界面,我們提供了可視化的路由配置功能,并且提供三種不同的路由模板,方便用戶快速完成路由的配置。

4. 日志查詢

 

 

 

 

網關運行后,所有系統日志均可在日志頁面進行查詢。

5. 統計查詢

 

 

 

 

所有經過的網關的請求都會被記錄并且生成統計,方便日后的定位與分析。

6. TOP查詢

 

 

 

 

我們還會對請求數,平均響應時間,錯誤數,錯誤率進行TOP查詢,方便用戶準確定位和及時跟蹤。

6.未來展望

1. 通過我們的規則制定,在插件中, 可以為網關添加各種 RoutePredicateFactory, GatewayFilterFactory, Filter, Predicate 等, 擴充網關在路由匹配, 請求過濾, 負載均衡等各方面的能力,支持各種個性化的改造。

2. 在Governor的網關管理界面,提供整套的網關插件管理功能。

3. 同時可以實現高效的插件熱部署。

以上就是我為大家帶來的EOS服務網關架構的介紹,希望對大家有所幫助,如有不足之處也請多多指教,謝謝。

責任編輯:華軒 來源: EAWorld
相關推薦

2023-06-09 14:46:36

2017-03-09 19:39:54

微服務架構重構

2024-08-05 10:03:53

2024-07-02 10:58:53

2019-08-16 08:41:00

微服務架構安全

2022-05-11 08:22:21

服務網關架構

2021-03-09 09:33:42

網關授權微服務

2017-09-04 16:15:44

服務網關架構

2018-08-01 14:20:11

微服務架構人工智能

2016-11-23 10:56:35

2019-07-11 15:25:02

架構運維技術

2021-07-02 06:54:45

軟件架構模式

2015-12-02 09:52:42

2017-12-28 09:41:29

微服務網關容錯

2023-07-28 09:23:24

微服務架構

2017-07-04 14:57:40

微服務paasdocker

2020-10-10 10:37:54

微服務架構技術API

2021-03-17 10:51:16

架構運維技術

2023-02-07 07:43:27

微服務應用框架

2023-01-12 08:00:00

SpringClou微服務框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人一区 | 97精品超碰一区二区三区 | 蜜桃黄网 | 狼色网 | 自拍偷拍精品 | av在线一区二区三区 | 成人精品鲁一区一区二区 | 九七午夜剧场福利写真 | 欧美一级片在线观看 | 欧美激情视频一区二区三区在线播放 | 国产日韩欧美91 | 97免费在线视频 | 日韩中文字幕一区 | 久久机热 | 亚洲一级淫片 | 欧美一级二级视频 | 一级毛片在线播放 | 国产精品一区网站 | 免费在线观看av片 | 成人免费视频观看视频 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 亚洲中午字幕 | 欧美日日| 久久久精品一区二区三区四季av | 五月婷婷亚洲 | 国产美女免费视频 | 中文字幕在线观看 | 一区二区不卡视频 | 久久久青草婷婷精品综合日韩 | www.免费看片.com | 羞羞午夜| 在线中文视频 | 欧美激情在线观看一区二区三区 | 羞羞的视频网站 | 国产亚洲一区精品 | 81精品国产乱码久久久久久 | 久久久精品一区二区三区 | 中文字幕 在线观看 | 国产成人在线免费 | 在线欧美亚洲 | 久久久久久久久久久一区二区 |