適用於:所有 API 管理 層
本文針對 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 | ❌ | ❌ | ✔️ |
可用性區域 | 高級 | ✔️3 | ❌ | ✔️1 | ✔️3 |
多區域部署 | 高級 | ❌ | ❌ | ✔️1 | ❌ |
用於憑證驗證的CA 根憑證 | ✔️ | ✔️ | ❌ | ✔️4 | ❌ |
受控網域憑證 | 開發人員、基本、標準、進階 | ❌ | ✔️ | ❌ | ❌ |
TLS 設定 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
HTTP/2 (用戶端到閘道) | ✔️5 | ✔️5 | ❌ | ✔️ | ❌ |
HTTP/2 (閘道到後端) | ❌ | ❌ | ❌ | ✔️ | ❌ |
使用Defender for APIs 進行 API 威脅偵測 | ✔️ | ✔️ | ❌ | ❌ | ❌ |
1 取決於閘道的部署方式,但這是客戶的責任。
2 連線到自我託管閘道 v2 設定端點 需要對端點主機名稱進行 DNS 解析。
3 預設啟用兩個區域,無法設定。
4 系統會針對每個閘道個別管理自我裝載閘道的 CA 根憑證
5 必須啟用用戶端通訊協定。
後端 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 | ✔️ |
1 在原則執行期間,略過自我裝載閘道不支援的已設定原則。
2 依金鑰設定的速率限制、依金鑰設定的配額和 AI 令牌限制原則在消費層級中無法使用。
3 自我裝載網關中的速率限制計數可以設定為在本機同步處理(在叢集節點之間的網關實例之間),例如,透過 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 之類的環境中,新增多個閘道複本以處理預期的使用量。
- 選擇性地設定自動調整,以符合流量需求。
工作區閘道
透過在工作區閘道中新增和移除縮放單位來調整容量。
相關內容
深入了解:
- 混合與多雲端世界中的 API 管理
- 容量指標用於擴展決策
- APIM 中的可檢視性功能
- API 管理中的 AI 閘道功能