什麼是持久任務?

Durable Task 是 Microsoft 對 持久執行 的實作,這是一種產業層面的做法,透過自動保存其進度,使普通程式碼具備容錯能力。 它是一個用來以一般程式碼建立容錯工作流程和編排的框架。 你不必管理複雜的重試邏輯、狀態機或訊息佇列,而是將商業邏輯寫成直接的函式,而 Durable Task 則幫你處理狀態持久化、自動恢復與分散式協調。

持久任務工作流程可持續數小時、數天甚至數月,且在任何崩潰、重啟或重新部署後,都能可靠地從最後完成的步驟繼續。 常見的應用場景包括分散式交易、多代理 AI 協調、資料處理流程及基礎設施管理。

本文其餘部分將說明 Durable Task 的定位、它支援的語言與主機模型,以及它的結構,讓你能決定如何用它打造容錯的應用程式。

Durable Task 包含的內容

持久性任務包括:

關鍵耐用任務的使用案例

當您的應用程式需要跨分散式服務進行可靠且長時間的工作流程協調時,請使用持久任務。 常見情況包括:

  • 長時間執行的程序:Durable Task 能管理長時間執行的程序的狀態與進度,即使有中斷或錯誤。 範例包括訂單處理、資料管線、機器學習模型訓練及長期模擬。
  • 平行與扇出/扇入情境:Durable Task 能協調將工作扇出到多個在不同機器上平行執行的工作者,然後彙整結果。 例如影像處理、映射縮減工作及 ETL 工作流程。
  • 微服務與 API 協調:Durable Task 能協調分散式服務、API 及具有複雜控制流程與錯誤處理的機器間的工作。 Durable Task 也支援使用 saga 模式的分散式交易,每個步驟都有補償邏輯,若後續步驟失敗會自動執行。
  • 商務程序自動化:Durable Task 可將複雜且具決定性的商務程序自動化,這些程序涉及多個步驟、相依性、人工介入,以及長時間的錯誤處理。 例如供應鏈管理、文件審查、客戶入職及身份驗證。
  • 基礎設施自動化:Durable Task 能管理基礎設施配置、配置與部署,並處理複雜的相依性與錯誤處理。 例如雲端資源管理與 CI/CD 管線。
  • 多重 Agent 協調流程:Durable Task 可協調多個 AI 代理程式的工作,確保在長時間執行期間確實遵循任務要求,並在複雜的多步驟 AI 程序中有效運用權杖。 例如用於深度研究、程式設計及客戶支援的 AI 代理。

這些情境的共同點是,工作過於複雜、時間過長或分散式,無法用臨時程式碼可靠管理。 Durable Task 提供了底層保證——持久性、容錯性與有狀態協調——讓你能將該工作寫成直觀的程式碼。

支援語言與持久任務主機模型

Durable Task 支援多種程式語言,涵蓋兩種主機模式:Azure Functions(透過 Durable Functions 擴充套件)及 自行裝載(透過獨立的 Durable Task SDK)。 Azure Functions 主機模式提供完全管理、無伺服器的計算環境,並內建擴展與編排功能;而自架模式則支援在任何計算平台上執行持久應用程式,例如 Azure 容器應用程式、Azure Kubernetes Service,Azure App 服務,或者虛擬機。

語言 Azure Functions Self-hosted
.NET (C#/F#) 是的 是的
JavaScript/TypeScript 是的 是的
Python 是的 是的
JAVA 是的 是的
Go No 是的(測試版)
PowerShell 是的 No

備註

Durable Task SDK for Go 是供可連線至 Durable Task Scheduler 的自架應用程式使用的開源測試版。 Durable Functions 不支援 Go。

關於如何在Azure Functions與自架之間選擇,請參見 選擇你的主機模式。

耐用任務架構:SDK 與狀態儲存後端

Durable Task 有兩大主要層:一個是你用在應用程式碼裡的 SDK ,另一個是管理狀態的 狀態儲存後端 。

Durable Task SDK

你可以使用 Durable Task SDK 在應用程式程式碼中撰寫編排、活動和實體。 它內部處理持久執行的機制——重播編排器功能、管理本地執行上下文,並與狀態儲存後端通訊。 Durable Task 在支援的語言及兩種主機模式中提供多種 SDK 選項:Azure Functions 與自行託管。

關於如何在這些選項中做出選擇,請參閱 「選擇您的主機模式」。

狀態儲存後端

狀態儲存後端持久化協調流程狀態、維護執行歷史,並協調跨計算實例的分散式擴展。

推薦的狀態儲存選項是 Durable Task Scheduler——一項專為 Durable Task 工作負載打造且高度優化的全受控 Azure 服務。 它同時支援 Durable Functions 與獨立的 Durable Task SDK,並提供最豐富的功能組合,且無需管理儲存基礎設施。

另外,Durable Functions 支援多種自備(BYO)儲存選項。 這些選項讓你能更精確地控制狀態的儲存位置,但需要你自己配置和管理底層基礎設施。 BYO 儲存後端目前僅支援 Durable Functions。

欲了解更多儲存選項資訊,請參閱 儲存服務提供者。

額外的持久工作資源

研究出版品

Microsoft 與 Microsoft Research 合作開發 Durable Task。 因此,團隊產出研究論文與成果物,包括:

影片概觀

以下影片將介紹 Durable Functions 的優點:

下一步