Spring Cloud微服務之Gateway網關(十三)

一、網關基本概念

1、API網關介紹

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

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

(2)存在跨域請求,在一定場景下處理相對複雜。

(3)認證複雜,每個服務都需要獨立認證。

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

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

以上這些問題可以藉助 API 網關解決。API 網關是介於客戶端和服務器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,API 的實現方面更多的考慮業務邏輯,而安全、性能、監控可以交由 API 網關來做,這樣既提高業務靈活性又不缺安全性

2、Spring Cloud Gateway

Spring cloud gateway是spring官方基於Spring 5.0、Spring Boot2.0和Project Reactor等技術開發的網關,Spring Cloud Gateway旨在爲微服務架構提供簡單、有效和統一的API路由管理方式,Spring Cloud Gateway作爲Spring Cloud生態系統中的網關,目標是替代Netflix Zuul,其不僅提供統一的路由方式,並且還基於Filer鏈的方式提供了網關基本的功能,例如:安全、監控/埋點、限流等。

3、Spring Cloud Gateway核心概念

網關提供API全託管服務,豐富的API管理功能,輔助企業管理大規模的API,以降低管理成本和安全風險,包括協議適配、協議轉發、安全策略、防刷、流量、監控日誌等貢呢。一般來說網關對外暴露的URL或者接口信息,我們統稱爲路由信息。如果研發過網關中間件或者使用過Zuul的人,會知道網關的核心是Filter以及Filter Chain(Filter責任鏈)。Sprig Cloud Gateway也具有路由和Filter的概念。下面介紹一下Spring Cloud Gateway中幾個重要的概念。

(1)路由。路由是網關最基礎的部分,路由信息有一個ID、一個目的URL、一組斷言和一組Filter組成。如果斷言路由爲真,則說明請求的URL和配置匹配

(2)斷言。Java8中的斷言函數。Spring Cloud Gateway中的斷言函數輸入類型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的斷言函數允許開發者去定義匹配來自於http request中的任何信息,比如請求頭和參數等。

(3)過濾器。一個標準的Spring webFilter。Spring cloud gateway中的filter分爲兩種類型的Filter,分別是Gateway Filter和Global Filter。過濾器Filter將會對請求和響應進行修改處理
在這裏插入圖片描述
如上圖所示,Spring cloud Gateway發出請求。然後再由Gateway Handler Mapping中找到與請求相匹配的路由,將其發送到Gateway web handler。Handler再通過指定的過濾器鏈將請求發送到我們實際的服務執行業務邏輯,然後返回。

4、我們在沒有網關下,怎麼解決客戶端直接與各個微服務通信的?

我們最常用的是不是使用Nignix服務器的反向代理(Reverse Proxy):是指 以代理服務器來接受internet上的連接請求, 然後將請求轉發給內部網絡上的服務器, 並將從服務器上得到的結果返回給internet上請求連接的客戶端, 此時代理服務器對外就表現爲一個服務器.
相當於我們要單獨配一個Nignix代理服務器,是吧,這種方式也能解決,不過既然是微服務架構,我們就用微服務的方式,那就是網關來解決我們最常見的一個前後端分離中請求轉發的問題。

5、問題構思

我們之前創建了兩個服務模塊,分別是servie_user和service_file,端口分別爲9901和9902,怎麼讓客戶端只調用一個端口,即可對接我們的服務呢?
下一篇,繼續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章