對於開發分散式系統的工程師來說,最頭痛的往往不是如何寫好單一功能,而是在多個步驟的長流程中,如何確保系統在發生故障時能可靠地恢復。例如,當你設計一個 AI 代理人(AI Agent)或複雜的數據同步管線時,如果流程在第五步崩潰,你絕對不希望系統從第一步重新開始,或者在重試時導致數據重複寫入。這就是 Cloudflare Workflows V2 試圖解決的核心問題。
理解工作流編排的背景
在傳統的 Serverless 環境中,函數通常是無狀態且短暫的。如果你需要執行一個需要跨越數小時甚至數天、包含多個 API 調用與數據處理的長流程,你必須自己管理狀態。這通常意味著你要在數據庫中記錄目前執行到哪一步,並自行編寫複雜的重試邏輯與錯誤處理機制。
Cloudflare Workflows 提供的就是一種持久化執行(Durable Execution)機制。它允許開發者定義一個多步驟的流程,系統會自動幫你記錄每一步的狀態。即使底層的運算資源發生故障或重新啟動,工作流也能從上次成功的地方繼續執行,而不需要開發者手動維護狀態機。
V2 版本的核心突破:確定性執行與重播機制
Workflows V2 最重要的技術改變在於引入了確定性執行(Deterministic Execution)模型。對於初學者來說,確定性是指:給予相同的輸入與狀態,無論執行多少次,結果都必須完全一致。
在 V2 中,每個工作流步驟都被設計為隔離且冪等(Idempotent)的。冪等是指同一個操作執行一次或多次,對系統產生的影響相同。當系統發生故障需要恢復時,它會採取重播(Replay)策略。系統會回溯執行歷史,跳過已經成功完成的步驟,直接從失敗的那一點恢復。
這種設計解決了分散式系統中常見的重複執行問題。如果你在第一版(V1)中遇到故障,可能會因為缺乏嚴格的確定性而導致部分步驟被重複執行,造成數據不一致;而 V2 則確保了執行路徑的可預測性,讓開發者能更簡單地推理程式碼在失敗時會如何表現。
大幅提升的擴展能力與實務影響
除了架構上的確定性,V2 在性能指標上有了顯著的跳躍。併發執行實例從 4,500 個提升至 50,000 個,每秒新增執行數從 100 個增加到 300 個,而隊列容量則翻倍至 200 萬個實例。
這對實際開發有什麼影響?這意味著 Workflows 現在可以承載真正的企業級規模負載。例如,在 AI 代理人場景中,一個複雜的任務可能需要調用多個大型語言模型(LLM)、查詢數據庫並發送通知。在高併發的情況下,V2 的擴展能力確保了即使有數萬個用戶同時觸發長流程,系統也不會因為狀態管理瓶頸而崩潰。
底層技術堆棧的協同運作
Workflows V2 並非獨立存在,而是整合了 Cloudflare 的多項核心技術:Workers 提供高效的邊緣運算能力,Queues 負責事件的接收與排隊,而 Durable Objects 則在底層確保了跨區域狀態的一致性與協調。
此外,V2 強化了可觀測性(Observability)。開發者現在可以查看步驟級別的追蹤(Step-level tracing)與完整的執行歷史紀錄。這在生產環境中至關重要,因為當一個長達數小時的流程在深夜失敗時,工程師能直接定位是哪個步驟出錯,而不是在海量的日誌中大海撈針。
從 V1 遷移至 V2 的挑戰
需要注意的是,V2 並非簡單的升級,而是一種語義上的改變。開發者必須將原有的邏輯重新結構化為明確的、隔離的步驟。因為 V2 依賴於重播機制,如果你的步驟中包含了非確定性的行為(例如在步驟內直接使用隨機數或當前時間戳而未經妥善處理),可能會導致重播時出現不一致的情況。
總結來說,Cloudflare Workflows V2 將複雜的分散式狀態管理抽象化,讓工程師能像寫單機程式一樣編寫長流程,同時享有全球分佈式系統的彈性與可靠性。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。