天天看點

【整理】微服務中的 API 網關(API Gateway)API網關

API網關

API網關是一個伺服器,是系統的唯一入口。從面向對象設計的角度看,它與外觀模式類似。API網關封裝了系統内部架構,為每個用戶端提供一個定制的API。它可能還具有其它職責,如身份驗證、監控、負載均衡、緩存、請求分片與管理、靜态響應處理。

API網關方式的核心要點是,所有的用戶端和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。通常,網關也是提供REST/HTTP的通路API。服務端通過API-GW注冊和管理服務。

單節點網關

【整理】微服務中的 API 網關(API Gateway)API網關

Backends for frontends 網關

針對不同點的用戶端

【整理】微服務中的 API 網關(API Gateway)API網關

網關綜合應用示例

【整理】微服務中的 API 網關(API Gateway)API網關
  • OpenResty Api Gateway

從左至右 HTTP 請求先由DNS在拿到第一手流量後負載均衡到基于 OpenResty 的 API Gataway 網關叢集,在這個流程我們可以使用像 Kong,Orage,Tyk 這些開源的支援高并發高通路量 API 網關程式在做第一層流量的防護,在這一級我們可以做一些像身份認證,安全,監控,日志,流控等政策。除了這些我們還可以做一些服務的發現和注冊(這個要看不同網關的支援程度),接口的版本控制,路由重寫等。

  • Aggr Api Gateway

然後再由這些 API 網關把請求再負載到不同的 Aggr Api Gateway,在這裡我們做聚合服務這個操作,具體展現也就是圖中的黃色區域是需要由各個語言的開發人員來需要寫代碼實作的。具體流程也就是我們可以引入像 Ocelot 這種和語言相關的 API 網關開源項目,然後通過 NuGet 包引入之後通過 Json配置+聚合代碼的方式來整合後端的各個微服務提供聚合查詢等操作。這期間對于有需求的接口,我們可以應用逾時,緩存,熔斷,重試等政策。

從 Aggr Api Gateway 到後端微服務叢集這中間就屬于内部的通訊了,我們可以使用對内部友好的通訊協定比如 gRPC 或者 AMQP 等,然後進行 RPC調用提高通訊性能。

注意:Aggr Api Gateway 這個網關對于一些接口來說的話并不是必須的,也可以由後端微服務直接提供REST API給第一層網關使用。

整理來源:http://www.cnblogs.com/savorboard/p/api-gateway.html

繼續閱讀