Flex Consumption 是以 Linux 為基礎的 Azure Functions 主控方案,是依照使用量計費,按使用量付費的無伺服器計費模型。 它透過引入私有網路、執行個體記憶體大小選擇以及仍基於 無伺服器 模型的快速/大型橫向擴展功能,為您提供更大的靈活性和可自訂性。
您可以在 Flex Consumption 方案範例存放庫中,檢閱採用 Flex Consumption 方案的端對端範例。
Benefits
Flex Consumption 方案是以無伺服器消費方案的優點為基礎,這些優點包括動態擴展和按執行計費。 使用 Flex Consumption 時,您還會取得下列額外功能:
- 減少冷啟動時間:相較於使用量方案,啟用隨時可用的執行個體,以達到更快的冷啟動時間。
- 虛擬網路支援: 虛擬網路整合 可讓您的無伺服器應用程式在虛擬網路中執行。
- 個別函式調整:應用程式中的每個函式都會根據其工作負載獨立調整 (部分內容可能是機器或 AI 翻譯),從而可能實現更有效率的資源配置。
- 改善並行處理:使用每個函式可設定的並行設定,更妥善地處理並行執行。
- 靈活的記憶體配置:Flex Consumption 提供多種 執行個體大小 大小選項,可讓您針對特定工作負載需求進行最佳化。
下表協助您直接比較 Flex Consumption 與 Consumption 主控方案的功能:
| Feature | 使用量 | 彈性使用量 |
|---|---|---|
| 調整至零 | ✅ 是 | ✅ 是 |
| 縮放行為 | 事件驅動 | 事件驅動 (快速) |
| 虛擬網路 | ❌ 不支援 | ✅ 支援 |
| 專用計算 (減輕冷啟動) | ❌ 無 | ✅ 隨時可用執行個體 (選用) |
| Billing | 僅限執行時間 | 執行時間 + 隨時可用執行個體 |
| 擴增執行個體 (上限) | 200 | 1000 |
如需彈性使用量方案與 Consumption 方案和所有其他方案與裝載類型的完整比較,請參閱函式調整和裝載選項。
虛擬網路整合
Flex Consumption 新增對虛擬網路整合的支援,將 Consumption 方案的傳統優點發揚光大。 應用程式以 Flex Consumption 方案執行時,可以連線到虛擬網路內保護的其他 Azure 服務。 同時仍可讓您利用無伺服器計費和縮放,以及 Flex Consumption 方案的調整和輸送量優點。 如需詳細資訊,請參閱啟用虛擬網路整合。
執行個體大小
在彈性使用量方案建立函數應用程式時,您可以選取應用程式執行使用的執行個體記憶體大小。 請參閱 計費,瞭解執行個體的記憶體大小如何影響您函式應用程式的成本。
目前,Flex Consumption 提供下列執行個體大小選項:
| 執行個體記憶體 (MB) | CPU 核心 |
|---|---|
| 512 | 0.25 |
| 2048 | 1 |
| 4096 | 2 個 |
備註
顯示的 CPU 核心值是具有指定記憶體大小的執行個體的一般配置。 不過,初始執行個體可能會被授予略有不同的核心配置,以提高效能。
決定應用程式要搭配使用的執行個體記憶體大小時,以下是一些需要考慮的事項:
- 2,048 MB 執行個體記憶體大小是預設值,應該用於大部分案例。 512 MB 和 4,096 MB 實例記憶體大小適用於最適合您應用程式並行或處理能力需求的案例。 如需詳細資訊,請參閱設定執行個體記憶體。
- 您可以隨時變更執行個體的記憶體大小。 如需詳細資訊,請參閱設定執行個體記憶體。
- 執行個體資源會在函式程式碼與 Azure Functions 主機之間共用。
- 執行個體記憶體愈大,每個執行個體可以處理的並行執行就愈多,或是 CPU 或記憶體工作負載就愈密集。 特定調整決策取決於工作負載。
- HTTP 觸發程序的預設並行取決於執行個體記憶體大小。 如需詳細資訊,請參閱 HTTP 觸發程序並行。
- 可用的 CPU 和網路頻寬與特定執行個體大小成正比。
根據個別函式調整
並行是決定彈性使用量函數應用程式調整的關鍵因素。 為了改善各種觸發程序類型的應用程式調整效能,彈性使用量方案提供更為決定性的方式,以個別函式為基礎調整您的應用程式。
這種 每個函數的擴展 行為是託管平台的一部分,因此您不需要設定應用程式或變更程式碼。 如需詳細資訊,請參閱事件驅動擴展一文中的 每個函數擴展 。
在個別函式調整中,會根據群組彙總針對特定函式觸發程序做出決策。 下表顯示一組已定義的函式調整群組:
| 調整群組 | 群組中的觸發程序 | 設定值 |
|---|---|---|
| HTTP 觸發程序 |
HTTP 觸發程序 SignalR 觸發器 |
http |
| Blob 儲存體觸發程序 (以事件方格為基礎) |
Blob 儲存體觸發程序 | blob |
| Durable Functions |
協調觸發器 活動觸發程序 實體觸發器 |
durable |
應用程式中的所有其他函式都會在自己的執行個體集合中個別調整,這些執行個體會使用慣例 function:<NAMED_FUNCTION> 來加以參考。
永遠就緒的執行個體
彈性使用量包含隨時可用功能,可讓您選擇隨時執行並指派給每個函式調整群組或函式的執行個體。 隨時可用是一個絕佳的選項,適用於您需要有最少數目的執行個體隨時可以處理要求的情況。 例如,若要減少應用程式的冷啟動延遲。 預設值是 0 (零)。
例如,如果您為 HTTP 函式群組將隨時可用設定為 2,則平台會保留兩個執行個體隨時執行,並且為應用程式中的 HTTP 函式指派給應用程式。 這些執行個體正在處理您的函式執行,不過視並行設定而定,平台會以隨需執行個體擴大為兩個執行個體以上。
啟用區域備援時,每個函式或函式群組至少可以設定兩個始終處於就緒狀態的實例。
若要了解如何設定隨時可用的執行個體,請參閱設定隨時可用執行個體計數。
Concurrency
並行是指應用程式執行個體上同時執行的執行個體數目。 您可以設定每個執行個體在任何指定時間應該處理的同時執行數目上限。 並行對應用程式調整方式有直接影響,因為在較低的並行層級,您需要更多執行個體來處理函式的事件驅動需求。 雖然您可以控制並微調並行,但我們提供適用於大部分案例的預設值。
若要了解如何設定 HTTP 觸發程序函式的並行限制,請參閱設定 HTTP 並行限制。 若要了解如何設定非 HTTP 觸發程序函式的並行限制,請參閱目標基礎調整。
Deployment
彈性使用量方案中的部署會遵循單一路徑,而且不再需要應用程式設定來影響部署行為。 建置專案程式碼並壓縮到應用程式套件之後,它會部署到 Blob 儲存體容器。 啟動時,您的應用程式會取得該套件並執行該套件中的函式程式碼。 根據預設,用來儲存內部主機中繼資料的相同儲存體帳戶 (AzureWebJobsStorage) 也會用作部署容器。 不過,您可使用替代儲存體帳戶,或藉由設定應用程式的部署設定來選擇您慣用的驗證方法。
零停機時間部署
備註
具有滾動更新的零停機部署目前處於公開預覽狀態。
Flex Consumption 透過滾動更新作為 站點更新策略,提供零停機部署,允許在不中斷功能執行的情況下,跨實例逐步應用程式碼部署和配置變更。 其他主機方案使用部署插槽來將部署期間的停機時間減少到最小。 如需所有裝載計劃的部署選項,請參閱最佳 化部署。
Billing
在 Flex Consumption 方案中執行應用程式時,決定成本有兩種模式。 每個模式都是以每個執行個體為基礎來決定。
| 計費模式 | Description |
|---|---|
| 點播 | 在 隨需 模式下執行時,您只需根據函數程式碼在可用執行個體上執行的時間量付費。 在隨選模式中,不需要最低執行個體計數。 計費項目如下: • 每個隨需執行個體主動執行函式時佈建的記憶體總數 (以 GB-秒為單位),減去每月免費授與的 GB-秒。 • 執行總數,減去每月執行的免費授與 (數目)。 |
| 隨時準備就緒 | 您可以設定一或多個執行個體,指派給特定觸發程序類型 (HTTP/Durable/Blob) 和個別函式,這些函式隨時可供處理要求。 啟用任何隨時可用執行個體時,計費項目如下: • 在所有隨時準備就緒的執行個體上佈建的記憶體總量,稱為 基準 (以 GB 秒為單位)。 • 每個隨時就緒的執行個體在 正在活躍地 執行函式期間所佈建的記憶體總量(以 GB 秒為單位)。 • 執行總數。 使用隨時可用計費時,沒有免費授權。 |
如需執行價格的最新資訊、隨時可用基準成本,以及隨需執行的免費授與,請參閱 Azure Functions 定價頁面。
這兩種執行模式的可計費執行期間下限為 1,000 毫秒。 在過去,計費活動期間會四捨五入到最接近的 100 毫秒。 您可以在 監視參考中找到彈性取用方案計費計量的詳細資料。
如需在彈性消費計劃中執行時如何計算成本的詳細資訊 (包括範例),請參閱以 消費為基礎的成本 和 檢視成本相關資料。
支援的語言堆疊版本
下表顯示 Flex Consumption 應用程式目前支援的語言堆疊版本:
| 語言堆疊 | 所需版本 |
|---|---|
| C# (隔離處理模式)1 | .NET 82、.NET 93 |
| JAVA | Java 11、Java 17、Java 21 |
| Node.js | Node.js 20, Node.js 22 |
| PowerShell | PowerShell 7.4 |
| Python | Python 3.10、Python 3.11、Python 3.12 |
- 不支援 C# 進程內模式。 相反地,您必須移轉 .NET 程式碼專案,在隔離式背景工作角色模型中執行。
- 需要
1.20.0版本或更新版本的Microsoft.Azure.Functions.Worker,以及1.16.2版本或更新版本的Microsoft.Azure.Functions.Worker.Sdk。 - 需要
2.0.0和 Microsoft.Azure.Functions.Worker.Sdk 的版本或更新版本。
區域訂用帳戶記憶體配額
Flex 使用量方案具有記憶體型配額,可限制所有 Flex Consumption 應用程式可在特定區域和訂用帳戶中同時使用多少計算。 假設您在區域中的整個訂用帳戶都有以 GB 或 CPU 核心為單位的記憶體貯體。 該區域中的所有 Flex 取用應用程式會共用此存儲空間。 如果您的彈性使用量應用程式嘗試使用超過配額允許,某些執行可能會延遲或節流調整,但不會封鎖您建立或部署應用程式。
目前,指定訂用帳戶中的每個區域對於在彈性使用量方案上執行的所有應用程式執行個體,預設配額為 512,000 MB 或 250 個核心中的較小值。 這些配額表示,在指定的訂用帳戶和區域中,您可以擁有執行個體記憶體大小和計數的任意組合,只要它們保持在配額限制之下即可。 例如,在下列每個案例中,都會達到配額,且區域中的應用程式會停止調整:
- 您有一個 512 MB 的應用程式調整為 250 個實例,而第二個 512 MB 的應用程式則調整為 750 個實例。
- 您有一個 512 MB 的應用程式擴展到 1,000 個實例。
- 您有一個 2,048 MB 應用程式調整為 100 個執行個體,而第二個 2,048 MB 應用程式則調整為 150 個執行個體
- 您有一個 2,048 MB 的應用程式相應放大至 250 個執行個體
- 您有一個 4,096 MB 的應用程式相應放大至 125 個執行個體
- 您有一個 4,096 MB 的應用程式擴展至 100 個副本,以及一個 2,048 MB 的應用程式擴展至 50 個副本。
彈性使用量應用程式調整為零,或標示為縮減和刪除的執行個體,不會計入配額。 視需求而定,您可以增加此配額,讓您的 Flex Consumption 應用程式進一步調整。 如果您的應用程式需要較大的配額,請建立支援票證。
已被取代的屬性和設定
在 Flex 取用方案中,許多標準應用程式設定和網站配置屬性已被棄用或已移動,且不應在自動化函式應用程式資源建立時使用。 如需詳細資訊,請參閱 彈性使用量方案淘汰。
Considerations
使用彈性使用量方案時,請記住下列其他考量:
- 每個方案的應用程式:每個彈性取用方案只允許一個應用程式。
-
主機:應用程式初始化有 30 秒的逾時時間。 當函數應用程式需要超過 30 秒的時間啟動時,您可能會看到已記錄 gRPC 相關的
System.TimeoutException項目。 您目前無法設定此逾時。如需詳細資訊,請參閱此主機工作項目。 - Durable Functions:Azure 儲存體是目前在彈性使用量方案中裝載時,Durable Functions 唯一支援的儲存提供者。 請參閱在彈性取用方案中裝載 Durable Functions 時的 建議 。
-
虛擬網路整合
Microsoft.App,確定您的訂用帳戶已啟用 Azure 資源提供者。 彈性使用量應用程式所需的子網路委派為Microsoft.App/environments。 -
觸發程序:雖然彈性使用量方案完全支援所有觸發程序,但 Blob 儲存體觸發程序僅支援 Azure 事件方格來源 (部分內容可能是機器或 AI 翻譯)。 非 C# 函式應用程式必須使用
[4.0.0, 5.0.0)的版本,或更新版本。 - 區域:目前並非所有區域都受支援。 若要深入了解,請參閱檢視目前支援的區域。
- 部署:目前不支援部署位置。
-
比例:目前的最大比例下限是
40。 目前支援的最高值為1000。 - 受控相依性:Flex Consumption 不支援 PowerShell 中的受控相依性。 您必須改為上傳具有應用程式內容的模組。
- 憑證:目前不支援使用 WEBSITE_LOAD_CERTIFICATES 應用程式設定載入憑證、受控憑證、應用程式服務憑證,以及其他平台憑證型功能 (例如 endToEndEncryptionEnabled)。
-
時區:在彈性使用量方案上執行時,目前不支援
WEBSITE_TIME_ZONE以及TZ應用程式設定。