Durable Functions 是什麼?

已完成

Durable Functions 可讓您在無伺服器環境中實作複雜的具狀態函式。

在範例案例中,貴公司目前針對專案設計提案遵循手動核准程序。 此程序具有多個步驟,且此程序的每個步驟可能有不同持續時間。 在內部實作自動化程序相當複雜且昂貴。 協調每個步驟需要花費功夫。 此外,您必須能夠將自訂邏輯併入工作流程中。

在此單元中,您將瞭解 Durable Functions 的優點。 您將瞭解與 Durable Functions 相關聯的各種不同函數類型和重要概念。

Durable Functions

Durable Functions 是 Azure Functions 的擴充功能。 Azure Functions 是在無狀態環境中運作,而 Durable Functions 則可保留函式呼叫之間的狀態。 此方法可讓您簡化無伺服器環境中複雜的具狀態執行。

Durable Functions 會依需求調整,並提供可在雲端實作複雜工作流程的符合成本效益方式。 使用 Durable Functions 的一些優點包括:

  • 它們可讓您撰寫事件驅動程式碼。 持久函式能夠以非同步方式等候一或多個外部事件,然後執行一系列工作來回應這些事件。

  • 您可以將函數鏈結在一起。 您可以實作常見的模式,例如展開傳送/收合傳送,這會使用一個函式來平行叫用其他函式,然後累積結果。

  • 您可以編排和協調函數,並指定函數應執行的順序。

  • 系統會為您管理狀態。 您無須撰寫自己的程式碼來儲存長時間執行之函數的狀態資訊。

Durable Functions 可讓您使用「協調流程函式」來定義具狀態的工作流程。 協調流程函數提供下列額外優點:

  • 您可以在程式碼中定義工作流程。 您無須撰寫 JSON 描述或使用工作流程設計工具。

  • 能以同步和非同步方式呼叫函數。 來自所呼叫函數的輸出會儲存在本地的變數中,並在後續的函數呼叫中使用。

  • 當函數進行等候時,Azure 會自動設定其進度的檢查點。 Azure 可能會在函式等候時,選擇將函式凍結並儲存其狀態,以保留資源並降低成本。 當函數再次開始執行時,Azure 會將函數解除凍結並還原其狀態。

函數類型

您可以使用三種持久函數:用戶端協調器活動

用戶端函式是建立 Durable Functions 協調流程執行個體的進入點。 其可以執行以回應來自許多來源的事件,例如正在抵達的新 HTTP 要求、正在張貼至訊息佇列的訊息、正在抵達事件資料流中的事件。 您可以使用任何支援的語言來撰寫它們。

「協調器」函式會描述動作的執行方式及其執行順序。 您需在程式碼 (C# 或 JavaScript) 中撰寫協調流程邏輯。

「活動」函式是 Durable Functions 協調流程中的基本工作單位。 活動函式包含所協調之工作所執行的實際工作。

應用程式模式

您可以使用 Durable Functions 來實作許多常見的工作流程模式。 這些模式包括:

  • 函式鏈結:在此模式中,工作流程會依指定順序執行一系列函式。 一個函式的輸出會套用至序列中下一個函式的輸入。 最後一個函式的輸出會用來產生結果。

    Diagram illustrating a function chaining pattern.

  • 展開傳送/收合傳送:此模式會以平行方式執行多個函式,然後等候所有函式完成。 您可以彙總平行執行的結果,或使用其來計算最終結果。

    Diagram illustrating a fan out/fan in pattern.

  • 非同步的 HTTP API:協調與外部用戶端的長時間執行作業狀態時,此模式可處理相關的協調問題。 HTTP 呼叫可以觸發長時間執行的動作,然後將用戶端重新導向至狀態端點。 用戶端可以藉由輪詢此端點來了解作業何時完成。

    Diagram illustrating an async HTTP API pattern.

  • 監視:此模式會在工作流程中實作週期性程序,可能是要尋找狀態變更。 例如,您可以使用此模式來輪詢,直到符合特定條件為止。

    Diagram illustrating a monitor pattern.

  • 人為互動:此模式會結合也涉及某種人為互動的自動化程序。 自動化程序內的手動程序相當棘手,因為人員並不像大多數電腦那樣經常有空且回應迅速。 您可以使用逾時,以及如果人員無法在指定的回應時間內正確互動便執行的補償邏輯,來合併人為互動。 核准程序便是一個涉及人為互動的程序範例。

    Diagram illustrating a human interaction pattern.

與 Logic Apps 的比較

Durable Functions 和 Logic Apps 都是可啟用無伺服器工作負載的 Azure 服務。 Azure Durable Functions 旨在用來作為功能強大的無伺服器計算選項來執行自訂邏輯。 Azure Logic Apps 則較適用於整合 Azure 服務與元件。 您可以使用這兩項技術其中之一來建立複雜協調流程。 使用 Azure Durable Functions 時,您需藉由撰寫程式碼及使用 Durable Functions 延伸模組來開發協調流程。 使用 Logic Apps 時,您需藉由使用設計介面或編輯設定檔來建立協調流程。

下表列出 Azure Durable Functions 與 Azure Logic Apps 之間的一些主要差異。

Task Azure Durable Functions Azure Logic 應用程式
部署 程式碼優先 (命令式) 設計優先 (宣告式)
連線性 約有十幾個內建繫結類型。 您可以撰寫自訂繫結的程式碼。 大量連接器。 適用於 B2B 的企業整合套件。 您也可以建置自訂連接器。
動作 每個活動都是 Azure 函數。 您需撰寫活動函數的程式碼。 大量現成的動作。 您需透過自訂連接器整合自訂邏輯。
監視 Azure Application Insights Azure 入口網站、Azure 監視器記錄
管理 REST API、PowerShell、Visual Studio Azure 入口網站、REST API、PowerShell、Visual Studio、Visual Studio Code 延伸模組

檢定您的知識

1.

Durable Functions 是什麼?

2.

下列哪一個描述最能說明「協調器」函式在工作流程中的角色?

3.

下列哪一個描述最能說明「人為互動」應用程式模式從 Durable Functions 受益的原因?