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