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