從頭開始構(gòu)建分布式工作流引擎
作者:AlphaFlow流程云團隊來源:778801.cn訪問:103時間:2024-08-21
近十年來,我一直癡迷于創(chuàng)建工作流引擎。工作流引擎的核心是負責在一組機器(通常稱為“工作者”或節(jié)點)上盡可能快速高效地執(zhí)行一系列任務(通常稱為“作業(yè)”、“管道”或“工作流”)。
?構(gòu)建工作流引擎會帶來一系列有趣的挑戰(zhàn)。以下是一份簡短且非詳盡的列表:您使用什么來編寫工作流?您使用通用編程語言嗎?像 JSON 或 YAML 這樣的配置類型語言,還是您自己開發(fā) DSL(領域特定語言)?
?我們?nèi)绾螞Q定哪些任務分配給哪些工作者,以便繁忙的工作者不會超負荷工作而其他工作者則處于空閑狀態(tài)?我們?nèi)绾翁幚砀鶕?jù)計算需求波動而擴大或縮小容量的要求?我們?nèi)绾翁幚黹g歇性任務失?。课覀?nèi)绾翁幚砉ぷ髌鞅罎??我們又如何處理要?zhí)行的任務多于可用容量的情況??
讓我們開始實踐
我們以一家視頻流公司的工作流為例。當時,該公司將其所有視頻處理需求外包給另一家公司。
?現(xiàn)有流程緩慢、昂貴且脆弱。該公司定期獲得新內(nèi)容(電影、預告片、獎勵視頻材料、隱藏式字幕等),我們需要一種快速處理這些內(nèi)容的方法,以便將其發(fā)布到服務中供客戶享受。
?此外,現(xiàn)有流程非常僵化,對它的任何更改(例如引入新的音頻技術)都需要數(shù)月時間,甚至根本不可能實現(xiàn)。
?工作流引擎的初始迭代使我們能夠開始處理“低風險”內(nèi)容(例如預告片),隨著我們對新系統(tǒng)越來越有信心,我們慢慢地完全淘汰了舊流程。
?構(gòu)建工作流引擎的目的不是為了一勞永逸,它始終是在幫助診斷企業(yè)當前工作流狀態(tài)優(yōu)良與否的關鍵。有時,舊的流程需要革新,工作流引擎也需要革新,但這種革新依托于大家都意識到,工作流引擎不代表業(yè)務從頭開始,而代表實踐其可用性的重新開始。