維基百科對工作流的定義是:對工作流程及其各操作步驟之間業務規則的抽象、概括描述。我們認為工作流的主要職責是:
保證結果一致性,提高容錯性要求:對錯誤重試,捕獲,執行回滾或補償邏輯
為長時間執行的流程維護持久化狀態,保證任務排程可靠性
控制邏輯和任務邏輯解耦:細化責任,便於管理、維護和擴充套件
流程控制中心化、視覺化:增強進度可觀測性,簡化來自不同背景人群的交流
模板方式定義控制邏輯和任務依賴:減少重複工作,統一流程描述標準
工作流通常適用於有狀態的(stateful),非同步 (async),長時間執行(long running)等特性的業務場景。其中比較典型的場景包括:
視訊,音訊,圖片處理工作流
訂單、審批流程
資料處理流水線
自動化運維
機器學習流水線、基因測序工作流
常見的開源工作流服務軟體如 Apache Airflow,Activiti,Flowable,Netflix Conductor 等提供了使用程式碼,DSL 或是 BPMN 這類標準的工作流描述方式,允許開發者自己搭建工作流服務。不同雲服務廠商也提供了各自的工作流服務如 AWS Step Functions, AWS Simple Workflow Service,Azure Durable Functions。那麼有沒有一個雲原生的工作流服務呢?
Serverless Workflow專案由CNCF(Cloud Native Computing Foundation,雲原生計算基金會)託管。它的引擎是用 c# 實現的,思想非常不錯,社群有人在用c# 做雲原生專案。有關誰參與以及Serverless Workflow扮演角色的詳細資訊,請閱讀Serverless Workflow的建議書:
https://github.com/cncf/toc/blob/master/proposals/serverlessworkflow.md
網站/程式碼:
http://serverlessworkflow.io/
https://github.com/serverlessworkflow
文件:
https://github.com/serverlessworkflow/specification
https://github.com/serverlessworkflow/specification/wiki
錯誤和功能請求:
https://github.com/serverlessworkflow/specification/issues
即時交流:
https://slack.cncf.io/的#serverless-workflow頻道
郵件列表:
https://lists.cncf.io/g/cncf-wg-serverless
訂閱郵件列表,也可以發電郵到:
cncf-wg-serverless+subscribe@lists.cncf.io