API 閘道器(API Gateway)學習

2022-04-30 15:39:16 字數 2152 閱讀 1537

我是做客戶端開發的,老是聽到服務端開發的同學提到閘道器,最近培訓課上一位老師又講到了閘道器,雖然不知道是什麼,但是聽他講的就是很好,非常方便,所以就來學習一下了。

1.1. 定義

api 閘道器是乙個處於應用程式或服務(提供 rest api 介面服務)之前的系統,用來管理授權、訪問控制和流量限制等,這樣 rest api 介面服務就被 api 閘道器保護起來,對所有的呼叫者透明。因此,隱藏在 api 閘道器後面的業務系統就可以專注於建立和管理服務,而不用去處理這些策略性的基礎設施。

閘道器的角色是作為乙個 api 架構,用來保護、增強和控制對於 api 服務的訪問。

1.2. 職責

api gateway是位於客戶端和api之間的乙個單點入口,它作為反向**將客戶端請求路由到後面的一組api。同時,api gateway可以承擔cross-cutting交叉功能,如安全與認證,請求速率管理,日誌,快取等。

如果沒有api gateway,客戶端就會直接把請求發給api,此時可能會有下列問題:

1)客戶端呼叫**複雜,客戶端需要和多個api互動,並且處理來自不同api的不同錯誤。

2)客戶端與api之間的耦合度高,客戶端需要知道各個api的呼叫細節,當api的介面發生變化,客戶端也需要進行更改。

3)客戶端的一次操作可能需要呼叫多個api介面,此時會產生多次網路呼叫並增加延遲。

4)每個面向公共網路呼叫的api都需要實現安全,請求速率管理等功能,都需要經過安全測試。

5)api必須使用對呼叫端友好對通訊協議,如http或者websocket。

api gateway是乙個伺服器,它是系統的單一入口點。它類似於物件導向設計中的立面模式。api gateway封裝了內部系統體系結構,並提供了適合每個客戶端的api。它可能具有其他職責,如身份驗證、監視、負載平衡、快取、請求形成和管理以及靜態響應處理。

下圖顯示了api gateway通常是如何適應體系結構的:

api gateway負責請求路由、組合和協議轉換。所有來自客戶端的請求首先通過api gateway。然後它將請求路由到適當的微服務。api gateway通常通過呼叫多個微服務並聚合結果來處理請求。它可以在內部使用的web協議(如http和websocket)和web不友好協議之間進行轉換

netflix 是使用api gateway的乙個成功案例, netflix流**服務可以在數百種不同的裝置上使用,包括電視、機頂盒、智慧型手機、遊戲系統、平板電腦等。最初,netflix試圖為其流**服務提供一種一刀切的api。然而,他們發現,由於裝置的多樣性和他們獨特的需求,它並不能很好地工作。今天,他們使用乙個api gateway,通過執行特定於裝置的介面卡**為每個裝置量身定製api。介面卡通常通過平均呼叫6到7個後端服務來處理每個請求。netflix api gateway每天處理數十億個請求。

目前社群的關於 api gataway 的專案有以下這些:

tyk:tyk是乙個開放原始碼的api閘道器,它是快速、可擴充套件和現代的。tyk提供了乙個api管理平台,其中包括api閘道器、api分析、開發人員門戶和api管理面板。try 是乙個基於go實現的閘道器服務。

kong:kong是乙個可擴充套件的開放原始碼api layer(也稱為api閘道器或api中介軟體)。kong 在任何restful api的前面執行,通過外掛程式擴充套件,它提供了超越核心平台的額外功能和服務。

orange:和kong類似也是基於openresty的乙個api閘道器程式.

netflix zuul:zuul是一種提供動態路由、監視、彈性、安全性等功能的邊緣服務。zuul是netflix出品的乙個基於jvm路由和服務端的負載均衡器。

apiaxle: nodejs 實現的乙個 api 閘道器。

api-umbrella: ruby 實現的乙個 api 閘道器。

aws api gateway

spring cloud gateway

api閘道器介紹

api閘道器是乙個系統的唯一入口。是眾多分布式服務唯一的乙個出口。它做到了物理隔離,內網服務只有通過閘道器才能暴露到外網被別人訪問。簡而言之 閘道器就是你家的大門 身份認證 oauth2 jwt 許可權安全 黑白名單 爬蟲控制 流量控制 請求大小 速率 資料轉換 公共請求request respon...

API閘道器的安全

跨站請求偽造 cross site request forgery 是一種挾制使用者在當前已登入的web程式上執行非本意的操作的攻擊方法,簡單來說就是你在瀏覽器開啟了兩個頁面,其中乙個頁面通過竊取另乙個頁面的cookie來傳送偽造請求 某一家銀行轉賬操作的url位址為 藏身於惡意 的某 片段 若賬戶...

微服務API閘道器

微服務api閘道器 api閘道器是乙個伺服器,是系統的唯一入口。從物件導向設計的角度看,它與外觀模式類似。api閘道器封裝了系統內部架構,為每個客戶端提供乙個定製的api。它可能還具有其它職責,如身份驗證 監控 負載均衡 快取 請求分片與管理 靜態響應處理。api閘道器方式的核心要點是,所有的客戶端...