Java Web架構篇之API網關

什麼是API網關

API網關是一個服務器,是系統的唯一入口。從面向對象設計的角度看,它與外觀模式類似。API網關封裝了系統內部架構,爲每個客戶端提供一個定製的API。它可能還具有其它職責,如身份驗證、監控、負載均衡、緩存、請求分片與管理、靜態響應處理。
API網關方式的核心要點是,所有的客戶端和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。通常,網關也是提供REST/HTTP的訪問API。服務端通過API-GW註冊和管理服務。


API網關解決的問題

  • 客戶端請求多個微服務,增加客戶端複雜度
  • 存在跨域,認證不統一問題
  • 與微服務耦合太強,微服務變更,客戶端需要變更

如何構建API網關

API網關的作用

API網關所處的位置通常爲:

客戶端
統一API網關
內部微服務

使用API網關的好處:

  • 易於監控
  • 統一認證
  • 減少客戶端與微服務交互,解耦接口依賴

網關大致分類

單節點API網關

Backends for frontends網關


開源網關

Netflix Zuul是一種提供動態路由、監視、彈性、安全性等功能的邊緣服務。Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器(Spring Cloud使用)。

提供能力:

  • 身份認證與安全
  • 審查與監控
  • 動態路由
  • 壓力測試
  • 負載分配
  • 靜態響應處理

API網關存在的問題及解決方案

問題

  • 拿單節點網關來說,這種網關相當於是處於 Web 層和 Service 之間,用來聚合服務的?注意,我們需要的是聚合服務,而以上這些開源項目都不具備這個功能,我說的聚合具體指的是開箱即用。
  • 除了單點問題,還有一個問題,網關需要承擔日誌,監控,安全,服務發現,版本控制等,甚至超時,熔斷,重試,聚合查詢等職能,這很容易造成性能問題。

解決方案

單點問題:Keepalived + LVS(LVS原理介紹) 保證一個網關掛掉時,迅速進行失效轉移
性能問題:雙重網關(雙重網關,外部網關處理安全,認證,限流,監控,日誌等,內部網關處理緩存,重試,熔斷等)


參考:
談談微服務中的 API 網關(API Gateway)

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