API網關(API GATEWAY)是什麼?有什麼作用?

一、什麼是API Gateway

我們知道在微服務架構中,大型服務都被拆分成了獨立的微服務,每個微服務通常會以RESTFUL API的形式對外提供服務。但是在UI方面,我們可能需要在一個頁面上顯示來自不同微服務的數據,此時就會需要一個統一的入口來進行API的調用。上圖中我們可以看到,API Gateway就在此場景下充當了多個服務的大門,系統的統一入口,從面向對象設計的角度看,它與外觀模式類似,API Gateway封裝了系統的內部複雜結構,同時它還可能具有其他API管理/調用的通用功能,如認證,限流,流控等功能。

二、爲什麼需要API Gateway

在微服務的架構模式下,API Gateway是微服務架構中一個非常通用的模式,利用API Gateway可以解決調用方如何調用獨立的微服務這個問題。

從部署結構上說,上圖是不採用API Gateway的微服務部署模式,我們可以清晰看到,這種部署模式下,客戶端與負載均衡器直接交互,完成服務的調用。但這是這種模式下,也有它的不足。

不足

不支持動態擴展,系統每多一個服務,就需要部署或修改負載均衡器。

無法做到動態的開關服務,若要下線某個服務,需要運維人員將服務地址從負載均衡器中移除。

對於API的限流,安全等控制,需要每個微服務去自己實現,增加了微服務的複雜性,同時也違反了微服務設計的單一職責原則。

上圖爲採用API Gateway模式,我們通過上圖可以看到,API Gateway做爲系統統一入口,實現了對各個微服務間的整合,同時又做到了對客戶端友好,屏蔽系統了複雜性和差異性。對比之前無API Gateway模式,API Gateway具有幾個比較重要的優點:

優點

採用API Gateway可以與微服務註冊中心連接,實現微服務無感知動態擴容。

API Gateway對於無法訪問的服務,可以做到自動熔斷,無需人工參與。

API Gateway可以方便的實現藍綠部署,金絲雀發佈或A/B發佈。

API Gateway做爲系統統一入口,我們可以將各個微服務公共功能放在API Gateway中實現,以儘可能減少各服務的職責。

幫助我們實現客戶端的負載均衡策略。

三、API Gateway分類

API Gateway可分爲兩類

  • 單節點 API 網關
  • Backends for frontends 網關

單節點的 API網關爲每個客戶端提供不同的API,而不是提供一種萬能風格的API。

這種模式是針對不同的客戶端來實現一個不同的API網關。

四、API Gateway中一些重要的功能

1、負載均衡

2、服務熔斷

3、灰度發佈

服務發佈上線過程中,我們不可能將新版本全部部署在生產環節中,因爲新版本並沒有接受真實用戶、真實數據、真實環境的考驗,此時我們需要進行灰度發佈,灰度發佈可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,同時影響小。API Gateway可以幫助我們輕鬆的完成灰度發佈,只需要在API Gateway中配置我們需要的規則,按版本,按IP段等,API Gateway會自動爲我們完成實際的請求分流。

4、數據聚合

由於不同的客戶端往往需要的數據完全不同,而這些數據又是不同的 service 提供的,比如上面提到的查看一個商品詳情頁,我們可能需要同時從商品服務,庫存服務,評價服務等中拉取信息,我們可以藉助 Gateway 方便完成來自不同 service 的數據聚合。

5、統一對外接口

當用戶需要集成不同產品或者服務之間的功能,調用不同服務提供的能力。利用APIGateway可以讓用戶在不感知服務邊緣的情況下,利用統一的接口組裝服務。

對於公司內部不同的服務,提供的接口可能在風格上存在一定的差異,通過APIGateway可以統一這種差異。 當內部服務修改時,可以通過APIGateway進行適配,不需要調用方進行調整

減少對外暴露服務可以增加系統安全性。

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