Azure API 管理中的 API 閘道
適用於:所有 APIM 層
本文針對 API 管理「閘道」元件的角色和功能提供相關資訊,並比較您可以部署的閘道。
相關資訊:
如需 API 管理案例、元件和概念的概觀,請參閱什麼是 Azure API 管理?
如需 APIM 服務層級和功能的詳細資訊,請參閱:
閘道的角色
API 管理「閘道」 (也稱為「資料平面」或「執行階段」) 是負責通過 Proxy 處理 API 要求、套用原則及收集遙測的服務元件。
具體而言,閘道可以:
- 透過接受 API 呼叫並將其路由至適當的後端,作為後端服務的介面
- 驗證 API 金鑰和其他認證,例如透過要求呈現的 JWT 權杖和憑證
- 強制執行使用量配額和速率限制
- 選擇轉換原則陳述式中指定的要求和回應
- 如果已設定,則快取回應以改善回應延遲,並將後端服務上的負載降到最低
- 發出監視、報告和疑難排解的記錄、計量和追蹤
注意
所有對 APIM 閘道的要求 (包括原則設定拒絕的要求) 都會計入設定的速率限制、配額和計費限制 (如果已在服務層級中套用)。
受控和自我裝載
API 管理同時提供受控和自我裝載閘道:
受控 - 受控閘道是針對 Azure 中,每個服務層級中的每個 API 管理執行個體部署的預設閘道元件。 獨立受控閘道也可以與 API 管理實例中的工作區相關聯。 使用受控閘道時,所有 API 流量都會流經 Azure,不論實作 API 的後端裝載位置為何。
注意
由於基礎服務結構的差異,不同 APIM 服務層級中提供的閘道在功能上有些差異。 如需詳細資訊,請參閱功能比較:受控與自我裝載閘道一節。
自我裝載 - 自我裝載閘道是預設受控閘道的選擇性容器化版本,在選取服務層級可供使用。 它對於需要在裝載 API 後端的相同環境中執行 Azure 閘道的混合式和多重雲端案例非常有用。 自我裝載閘道可讓使用混合式 IT 基礎結構的客戶,透過 Azure 中的單一 API 管理服務,管理裝載於內部部署與跨雲端裝載的 API。
自我裝載的閘道會封裝為 Linux 型 Docker 容器,而且通常會部署到 Kubernetes,包括 Azure Kubernetes Service 和已啟用 Azure Arc 的 Kubernetes。
每個自我裝載閘道都會與雲端式API 管理執行個體中的閘道資源相關聯,而自我裝載閘道會從中接收設定更新並傳達狀態。
功能比較:受控與自我裝載閘道
下表比較下列 APIM 閘道中可用的功能:
- 傳統 - 開發人員、基本、標準和進階服務層級 (先前分組為專用層級) 中可用的受控閘道
- V2 - 基本 v2、標準 v2 和進階 v2 層中提供的受控網關
- 使用量 - 使用量層中可用的受控閘道
- 自我裝載 - 選取服務層級中可用的選擇性自我裝載閘道
- 工作區 - 選取服務層的工作區中可用的受控閘道
注意
基礎結構
功能支援 | 傳統 | V2 | 耗用 | 自我裝載 | 工作區 |
---|---|---|---|---|---|
自訂網域 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
內建快取 (部分機器翻譯) | ✔️ | ✔️ | ❌ | ❌ | ✔️ |
外部 Redis 相容快取 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
虛擬網路插入 | 開發人員、進階 | 進階 v2 | ❌ | ✔️1,2 | ✔️ |
輸入私人端點 | 開發人員、基本、標準、進階 | 標準 v2 | ❌ | ❌ | ❌ |
輸出虛擬網路整合 | ❌ | 標準 v2、進階 v2 | ❌ | ❌ | ✔️ |
可用性區域 | 進階 | ❌ | ❌ | ✔️1 | ✔️3 |
多區域部署 (部分機器翻譯) | 進階 | ❌ | ❌ | ✔️1 | ❌ |
憑證驗證的CA 根憑證 | ✔️ | ✔️ | ❌ | ✔️3 | ❌ |
受控網域憑證 | 開發人員、基本、標準、進階 | ❌ | ✔️ | ❌ | ❌ |
TLS 設定 (部分機器翻譯) | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
HTTP/2 (用戶端到閘道) | ✔️4 | ✔️4 | ❌ | ✔️ | ❌ |
HTTP/2 (閘道到後端) | ❌ | ❌ | ❌ | ✔️ | ❌ |
使用適用於 API 的 Defender (部分機器翻譯) 的 API 威脅偵測 | ✔️ | ✔️ | ❌ | ❌ | ❌ |
1 取決於閘道的部署方式,但這是客戶的責任。
2 連線到自我裝載閘道 v2 設定端點 (部分機器翻譯) 需要端點主機名稱的 DNS 解析。
每個閘道分別管理自我裝載閘道的 3 個 CA 跟證書
4 必須啟用用戶端通訊協定。
後端 API
功能支援 | 傳統 | V2 | 耗用 | 自我裝載 | 工作區 |
---|---|---|---|---|---|
OpenAPI 規格 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
WSDL 規格 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
WADL 規格 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
邏輯應用程式 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
應用程式服務 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
函數應用程式 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
容器應用程式 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Service Fabric | 開發人員、進階 | ❌ | ❌ | ❌ | ❌ |
傳遞 GraphQL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
綜合 GraphQL | ✔️ | ✔️ | ✔️1 | ✔️1 | ❌ |
傳遞 WebSocket | ✔️ | ✔️ | ❌ | ✔️ | ❌ |
傳遞 gRPC | ❌ | ❌ | ❌ | ✔️ | ❌ |
OData | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Azure OpenAI 和 LLM | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
後端中的斷路器 (部分機器翻譯) | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
負載平衡的後端集區 (部分機器翻譯) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
1 不支援 Synthetic GraphQL 訂用帳戶 (預覽版)。
原則
受控和自我裝載閘道支援原則定義中所有可用的原則,但有下列例外狀況。 如需每個原則的詳細數據,請參閱原則參考。
功能支援 | 傳統 | V2 | 耗用 | 自我裝載1 | 工作區 |
---|---|---|---|---|---|
Dapr 整合 (部分機器翻譯) | ❌ | ❌ | ❌ | ✔️ | ❌ |
GraphQL 解析器 (部分機器翻譯) 和 GraphQL 驗證 (部分機器翻譯) | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
取得授權內容 | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
使用受控識別進行驗證 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Azure OpenAI 和 LLM 語意快取 | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
配額和速率限制 | ✔️ | ✔️2 | ✔️3 | ✔️4 | ✔️ |
1 在原則執行期間,略過自我裝載閘道不支援的已設定原則。
2 v2 層中無法使用依金鑰的配額原則。
3 依金鑰的速率限制、依金鑰的配額和 Azure OpenAI 權杖限制原則在取用層中無法使用。
4 自我裝載閘道中的頻率限制計數可以設定為在本機同步 (在叢集節點中的閘道執行個體之間),例如,透過適用於 Kubernetes 的 Helm 圖表部署或使用 Azure 入口網站部署範本。 不過,頻率限制計數不會與 APIM 執行個體中設定的其他閘道資源 (包括雲端中的受控閘道) 同步。
深入了解
監視
如需監視選項的詳細資訊,請參閱Azure API 管理中的可檢視性。
功能支援 | 傳統 | V2 | 耗用 | 自我裝載 | 工作區 |
---|---|---|---|---|---|
API 分析 | ✔️ | ✔️1 | ❌ | ❌ | ❌ |
Application Insights | ✔️ | ✔️ | ✔️ | ✔️2 | ✔️ |
透過事件中樞記錄 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Azure 監視器中的計量 (部分機器翻譯) | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
OpenTelemetry 收集器 | ❌ | ❌ | ❌ | ✔️ | ❌ |
要求 Azure 監視器和 Log Analytics 中的記錄 (部分機器翻譯) | ✔️ | ✔️ | ❌ | ❌ 3 | ❌ |
本機計量和記錄 | ❌ | ❌ | ❌ | ✔️ | ❌ |
要求追蹤 (部分機器翻譯) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
1 v2 層支援以 Azure 監視器為基礎的分析。
2 閘道會使用 Azure Application Insight 的內建記憶體緩衝區,且不會提供傳遞保證。
3 自我裝載閘道目前不會將資源記錄 (診斷記錄) 傳送到 Azure 監視器。 請選擇性地傳送計量至 Azure 監視器,或在本機設定並保存記錄,自我裝載閘道也部署於此。
驗證和授權
受控和自我裝載閘道支援所有可用的 API 驗證和授權選項,但有下列例外狀況。
功能支援 | 傳統 | V2 | 耗用 | 自我裝載 | 工作區 |
---|---|---|---|---|---|
認證管理員 | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
閘道輸送量和規模調整
重要
輸送量會受到同時用戶端連線的數目和速率、已設定原則的種類和數目、承載大小、後端 API 效能及其他因素的影響。 自我裝載閘道輸送量也取決於閘道執行時所在主機的計算容量 (CPU 和記憶體)。 使用預期的生產條件執行閘道負載測試,以準確判斷預期的輸送量。
受控閘道
如需API 管理服務層級中預估的閘道輸送量上限,請參閱API 管理定價。
重要
輸送量圖表僅做為提供資訊之用,請勿依賴該圖表進行容量和預算規劃。 如需詳細資訊,請參閱API 管理定價。
傳統層
- 藉由新增和移除縮放單位來調整閘道容量,或升級服務層級。 (開發人員層級中無法調整規模。)
- 在基本、標準和進階層級中,選擇性地設定 Azure 監視器自動調整。
- 在進階層級中,選擇性地跨多個區域新增並散發閘道容量。
v2 層
- 藉由新增和移除縮放單位來調整閘道容量,或升級服務層級。
使用層
- 使用層中的 API 管理執行個體會根據流量自動調整。
自我裝載閘道
- 在 Kubernetes 之類的環境中,新增多個閘道複本以處理預期的使用量。
- 選擇性地設定自動調整,以符合流量需求。
工作區閘道
透過在工作區閘道中新增和移除縮放單位來調整容量。
相關內容
深入了解:
- 混合式與多雲端世界中的 APIM
- 容量計量以調整決策
- APIM 中的可檢視性功能
- APIM 中的 GenAI 閘道功能