比較 Azure Functions 主控選項
在 Azure 中建立函式應用程式時,必須為應用程式選擇主控方案。 Azure 提供函式程式碼的這些主控選項:
| 主控選項 | 服務 | 工作時間 | 容器支援 |
|---|---|---|---|
| 使用量方案 | Azure Functions | 正式發行 (GA) | 無 |
| 彈性使用量方案 | Azure Functions | GA | 無 |
| 進階方案 | Azure Functions | GA | Linux |
| 專用方案 | Azure Functions | GA | Linux |
| 容器應用程式 | Azure 容器應用程式 | GA | Linux |
Azure App Service 基礎結構可協助在 Linux 和 Windows 虛擬機器上裝載 Azure Functions。 您選擇的主控選項會指定下列行為:
- 函式應用程式的縮放方式。
- 每個函式應用程式執行個體可用的資源。
- 支援進階功能,例如 Azure 虛擬網路連線。
- 支援 Linux 容器。
您選擇的方案也會影響執行函式程式碼的成本。
方案概觀
以下是各種裝載選項的優點摘要:
使用情況方案
取用方案是預設主控方案。 只有在函式執行 (隨用隨付) 搭配自動調整時,才需支付計算資源的費用。 採用使用量方案時,會根據傳入事件的數目,動態新增和移除 Functions 主機的執行個體。
彈性使用量方案
使用計算選擇、虛擬網路和隨用隨付計費獲得高可擴縮性。 在彈性使用量方案中,會根據每個執行個體的並行設定和傳入事件的數目,動態新增和移除 Functions 主機的執行個體。
您可以指定預先佈建的 (一律就緒) 執行個體數目來減少冷啟動次數。 根據需求自動調整。
進階方案
使用預先準備的背景工作角色,根據需求自動調整,這些背景工作角色會在閒置後無延遲地執行應用程式、在更強大的執行個體上執行,並連線到虛擬網路。
在下列情況下,請考慮 Azure Functions 進階方案:
- 您的函數應用程式會持續執行,或幾乎持續執行。
- 您想要進一步控制執行個體,並想要在具有事件驅動調整的相同方案中部署多個函數應用程式。
- 您在取用方案中有大量小型執行和高執行帳單,但 GB 秒數較低。
- 您需要比取用方案所提供更多的 CPU 或記憶體選項。
- 您的程式代碼執行時間必須超過取用方案所允許的運行時間上限。
- 您需要虛擬網路連線。
- 您要提供用來執行函式的自訂 Linux 映像。
專用方案
以一般 App Service 方案費率,在 App Service 方案中執行函數。 最適合無法使用 Durable Functions 的長時間執行情節。
在下列情況下,請考慮 App Service 方案:
- 您必須擁有完全可預測的計費,或需要手動調整執行個體。
- 您要在同一個方案上執行多個 Web 應用程式和函數應用程式
- 您需要存取較大的計算大小選項。
- App Service 環境 (ASE) 提供的完整計算隔離和保護網路存取。
- 高記憶體使用量和高規模 (ASE)。
容器應用程式
在 Azure Container Apps 主控的完全受控環境中建立和部署容器化函數應用程式。
使用 Azure Functions 程式設計模型來建置事件驅動、無伺服器、雲端原生函數應用程式。 將函式與其他微服務、API、網站和工作流程一起執行為容器主控的程式。
在下列情況下,請考慮在容器應用程式上主控函式:
- 您要使用函式程式碼封裝自訂程式庫,以支援企業營運應用程式。
- 您必須將程式碼執行從內部部署或舊版應用程式移轉至容器中執行的雲端原生微服務。
- 您要避免管理 Kubernetes 叢集和專用計算的額外負荷和複雜度。
- 您需要函式專用 CPU 計算資源所提供的高端處理能力。
函數應用程式逾時期間
functionTimeouthost.json項目檔中的 屬性會指定函式應用程式中函式的逾時持續時間。 此屬性特別適用於函式執行。 當觸發程序啟動函式執行之後,函式必須在逾時期間內傳回/回應。
下表顯示特定方案的預設值和最大值 (以分鐘為單位):
| 方案 | 預設 | 最大值1 |
|---|---|---|
| 彈性使用量方案 | 30 | 無限制2 |
| 進階方案 | 304 | 無限制2 |
| 專用方案 | 304 | 無限制3 |
| 容器應用程式 (Container Apps) | 30 | 無限制5 |
| 使用量方案 | 5 | 10 |
- 不論函數應用程式逾時設定為何,230 秒是 HTTP 觸發函式回應要求所能花費的最大時間量。 這是因為 Azure Load Balancer 的預設閒置逾時。 針對較長的處理時間,請考慮使用 Durable Functions 異步模式 或延遲實際工作並傳回立即回應。
- 沒有強制執行逾時期間上限。 不過,針對縮減為彈性使用量和進階方案的期間,提供給函式執行 60 分鐘的寬限期,而在平台更新期間則為 10 分鐘的寬限期。
- 需要將App Service 方案設定為 AlwaysOn。 在平台更新期間會提供 10 分鐘的寬限期。
- Functions 主機執行階段 1.x 版的預設逾時無限制。
- 當復本數目下限設定為零時,預設逾時取決於應用程式中使用的特定觸發程式。