工作流從無狀態切換到有狀態的好處

banq發表於2024-05-25


在這篇文章中,描述了工作流應用程式從無狀態到有狀態設計的演變。

初始無狀態設計

  • 最初建立在 Heroku 的免費 dynos(容器)上,它會在傳入請求時啟動。
  • 由於 Heroku 不提供免費儲存,因此使用記憶體 H2 資料庫。
  • 由於缺乏持久儲存,工作流必須在一次執行中執行並完成。
  • 轉換僅限於從“積壓”到“放棄”、“拒絕”或“接受”狀態。

遷移到有狀態

  • Heroku 取消免費計劃後,從 Heroku 遷移到 Scaleway 的免費無伺服器容器。
  • 從 H2 移至 Cockroach Cloud 的免費計劃以實現持久儲存。

重構為新的狀態設計,受益於持久儲存時釋放其真正威力。

藉助持久儲存,我們可以在任務完成後暫停流程例項,稍後恢復流程。
為此,我們依賴BPMN 術語中的訊息:

  • 任務可以流向訊息事件。
  • 任務完成後,流程將等待,直到收到訊息。
  • 當訊息發生時,流程將恢復。
  • 如果您可以傳送不同型別的訊息,基於事件的閘道器有助於將流程轉發到正確的下一步。

然而,魔鬼潛伏在細節中:任何例項都可以接收訊息,我們可以隨訊息傳送業務key。

好處:

  • 透過持久儲存,增加了更多狀態
  • 引入“reopen”等新狀態來處理更復雜的工作流程。
  • 利用狀態機來建模和驗證不同的轉換。


 

相關文章