我必須在專案串列上運行一個函式。我正在使用 Azure Durable Functions,并且可以使用它們的扇出/扇入策略并行運行這些專案。但是,我想知道這樣做與Parallel.ForEachAsync在單個 Activity 函式中使用新方法有什么區別。我需要使用 Durable 函式,因為這是一個永恒的編排,在完成后會重新啟動。
uj5u.com熱心網友回復:
AParallel.ForEachAsync系結到一個 Function App 實體。這意味著它與 Function App 擁有的資源系結。在消耗計劃中運行時,這意味著 1 個 vCPU。
當對 Durable Functions 使用扇出/扇入方法時,F2 的每個實體(見圖)都是它自己的 Function App 實體。反過來,它可以使用分配給它的全部資源。

簡而言之:使用扇出/扇入方法,您正在使用(大量)更多資源。可能會給您更快的結果。
您可能最好將兩者結合起來:分派到“F2”的批量作業,它以并行方式處理批量作業。
扇出作業被分配到
F2函式的多個實體。通過使用動態任務串列來跟蹤作業。Task.WhenAll被呼叫以等待所有被呼叫的函式完成。然后,F2從動態任務串列中聚合函式輸出并傳遞給F3函式。
await在呼叫時發生的自動檢查點Task.WhenAll確保潛在的中途崩潰或重新啟動不需要重新啟動已經完成的任務。
uj5u.com熱心網友回復:
對我而言,主要區別在于 Durable Functions 將為您處理失敗/重試:
在 Task.WhenAll 的 await 呼叫中發生的自動檢查點可確保潛在的中途崩潰或重新啟動不需要重新啟動已完成的任務。
在極少數情況下,在活動功能完成后但在其完成保存到編排歷史記錄之前,視窗中可能會發生崩潰。如果發生這種情況,活動功能將在行程恢復后從頭開始重新運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467145.html
上一篇:無法從xml節點獲取值
