API 閘道器並不是微服務場景中必須的元件,如下圖,不管有沒有 API 閘道器,後端微服務都可以透過 API 很好地支援客戶端的訪問。
但對於服務數量眾多、複雜度比較高、規模比較大的業務來說,引入 API 閘道器也有一系列的好處:
在網易雲與客戶合作的技術實踐中,客戶往往需要透過統一的 API 閘道器進行服務能力的共享,提供釋出、管理、保護和監控 API的能力,實現跨系統、跨協議的服務能力互通。以德邦快遞為例:
基於這樣的需求,網易雲輕舟微服務平臺的設計也包含了 API 閘道器元件的設計,採用外掛式流量複製與分流實現,以提高系統的穩定性和響應效率,不過團隊提供了可拆卸的模式,供使用者按照實際的應用場景來選擇。
-----------補充一下輕舟微服務平臺的一些相關設計--------------
API 閘道器中的服務路由和服務治理:
服務路由
服務治理
服務治理框架層的服務治理和流量管理:
流量管理
API 閘道器並不是微服務場景中必須的元件,如下圖,不管有沒有 API 閘道器,後端微服務都可以透過 API 很好地支援客戶端的訪問。
但對於服務數量眾多、複雜度比較高、規模比較大的業務來說,引入 API 閘道器也有一系列的好處:
聚合介面使得服務對呼叫者透明,客戶端與後端的耦合度降低聚合後臺服務,節省流量,提高效能,提升使用者體驗提供安全、流控、過濾、快取、計費、監控等 API 管理功能在網易雲與客戶合作的技術實踐中,客戶往往需要透過統一的 API 閘道器進行服務能力的共享,提供釋出、管理、保護和監控 API的能力,實現跨系統、跨協議的服務能力互通。以德邦快遞為例:
一是客戶需要透過 API 閘道器的熔斷/限流/降級服務治理等能力和服務治理框架層相結合,來保證物流系統更好地支撐峰值流量的衝擊;二是有些特殊場景的介面,比如支付介面,需要設定呼叫許可權,API 閘道器配合中間框架更好實現黑白名單和許可權的控制;三是閘道器的流量映象能力,可以轉發到壓測環境,客戶能夠更好地估計系統能夠承載的最大量;此外,API 閘道器透過流量的控制,還可以讓客戶更快地做好灰度釋出、A/B 測試。基於這樣的需求,網易雲輕舟微服務平臺的設計也包含了 API 閘道器元件的設計,採用外掛式流量複製與分流實現,以提高系統的穩定性和響應效率,不過團隊提供了可拆卸的模式,供使用者按照實際的應用場景來選擇。
-----------補充一下輕舟微服務平臺的一些相關設計--------------
API 閘道器中的服務路由和服務治理:
服務路由
靜態路由策略配置後端服務的軟負載均衡後端服務的心跳檢查引數分流流量的映象複製服務治理
後端服務的故障隔離閘道器、服務、API 級別的限流和熔斷固定時段和週期時段的 API 維護開關服務治理框架層的服務治理和流量管理:
服務治理
服務限流,支援 QPS、Thread 等多種限流方式降級與熔斷,支援基於RT、錯誤率的熔斷策略以及手動降級策略服務容錯,支援 failover、failfast、failback等多種容錯機制流量管理
路由管理,支援基於黑白名單的路由規則負載均衡,支援多種負載均衡規則,相容 Spring Cloud Ribbon引數分流,支援引數取模、名單分流、權重分流等