服務(wù)編排里有個核心的服務(wù),就是狀態(tài)機(State Machine)服務(wù),也稱為決策(Decider)服務(wù),用Netflix Conductor服務(wù)編排的架構(gòu)作為參考,我們可以看看狀態(tài)機所在的位置,下圖用紅框框著的就是狀態(tài)機服務(wù)。

狀態(tài)機一般分為有限狀態(tài)機FSM(Finite State Machine)、分層有限狀態(tài)機HFSM(Hierarchical Finite State Machine),包含狀態(tài)(State)、事件(Event)、轉(zhuǎn)換(Transition)、動作(Action)幾個關(guān)鍵元素,它們之間相互關(guān)聯(lián)和協(xié)同,在游戲或AI領(lǐng)域用得比較普遍。
玩過游戲的人肯定不陌生,特別是RPG,當(dāng)你用鼠標或鍵盤上下左右指揮游戲角色行走或奔跑時就是一種狀態(tài),當(dāng)遇到敵人時就進入了戰(zhàn)斗模式,這又是另種狀態(tài),而從一種狀態(tài)進入另一種狀態(tài)是需要事件觸發(fā)的,也就是事件驅(qū)動,當(dāng)你中途退出后又重新進入游戲,這時需要補償機制,也就是把之前游戲中的場景恢復(fù)回來。
FSM需要記住各種狀態(tài),通過事件的觸發(fā)(有條件),完成狀態(tài)之間的轉(zhuǎn)換。
當(dāng)狀態(tài)太多的時候,F(xiàn)SM會變得不容易維護,這時候就需要進行歸類,抽離相同或相似的狀態(tài)組成同類型的狀態(tài)機,再用一個大的狀態(tài)機來維護這些不同類型的狀態(tài)機,這樣就有了HFSM,同類型狀態(tài)機只關(guān)心內(nèi)部的狀態(tài)轉(zhuǎn)換,并不需要關(guān)心外部狀態(tài)的跳轉(zhuǎn),這樣就做到了無關(guān)狀態(tài)的隔離,而外部的狀態(tài)機只需要關(guān)注幾個同類型狀態(tài)機的跳轉(zhuǎn),如果狀態(tài)還比較多,可以再次提取進行多層歸類,這樣一來大大降低了狀態(tài)機的復(fù)雜度。

簡單的說在服務(wù)編排中就是做更新和調(diào)度的事情,更新工作流狀態(tài),確定下一個狀態(tài),結(jié)合分布式隊列服務(wù)調(diào)度合適的任務(wù),當(dāng)然也可以處理失敗、錯誤、異常補償機制。可見狀態(tài)機服務(wù)在服務(wù)編排中的重要作用,其實就是一個中樞內(nèi)核。
如果只是體驗,覺得Netflix Conductor還太復(fù)雜,網(wǎng)上也有多種實現(xiàn)思路,用Camel結(jié)合activeMQ也是不錯的簡單組合,當(dāng)然也要求你的動手能力夠強,類似于品牌機和組裝機的選擇。
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.tzhjjxc.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
SAMPE中國第二十屆國際先進復(fù)合材料展覽會
展會城市:北京市展會時間:2025-06-18