当前位置: 首页 > news >正文

常见的工作流编排引擎

常见工作流框架:微服务编排引擎

工作流框架还是比较多的,按照语言分类的话,有

Java: jBPM、Activiti、SWF

PHP: Tpflow、PHPworkflow

Go: Cadence(Cadence由Uber开发并开源,Maxim Fateev是Cadence的主架构师)、Temporal(Maxim Fateev为了推广Workflow编排引擎的商业化,另立门户创建了Temporal)、Fastflow 

工单系统调研:https://zhihu.kdocs.cn/l/ccLQYQzyjX9L?from_wecom=1#

特点缺点可视化界面语言开源

jBPM

  • 始祖级
  • 依赖服务差(如持久化-hibernate)
java
Activiti
  • 顺序流,一步一步执行,节点间有先后顺序
  • Activiti Custom Stencils – BPMN Editor
  • 可以绘制流程图
  • 可拓展
  • 需掌握Java语言 BPMN XML语法和图形符号
  • 审批等操作都是在一个大的长事务里面去执行,一个审批操作会设计到操作多张表,如果处理不好的话性能会影响比较大
java开源,star: 9.3k,近2天有更新
liteflow
  • 轻量
  • 逻辑驱动的编排
图形化界面java开源,star: 1.7k,近1周有更新

n8n(工作流)

docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n docker.n8n.io/n8nio/n8n

  • 简单,低代码运行
  • 可拓展
  • 节点是黑盒,报错不可观测
  • 官方支持了很多打包节点,但对按业务来看基本不能直接复用
  • 收费
图形化界面,关联节点,事件触发js

开源,star: 29.1k,近1天有更新

Temporal

Cadence

  • 支持重入、取消、超时控制、等待回调
  • 提供工作流河代码执行状态完整可见
  • 中心化状态机+事件溯源模式

  • 支持横向拓展
  • 偏底层,需要自己实现DSL和对应的可视化UI
  • 需按固定格式编写代码
图形化界面,可以清楚的知道上下文golang

开源,star: 6.8k,近1天有更新

Fastflow
  • 轻量、支持水平扩容
  • 开箱即用、低代码
  • DAG 模式
golang开源,star: 108,近三月有更新

flowable

  • 从 activiti6 中分裂出来的,在其基础上研发了 DMN 支持,BPEL 支持等
  • 大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、ES 等
java开源版本维护滞留
Camunda
  • 基于 activiti5,保留了 PVM
  • 支持流程实例的迁移
  • bug 较多,维护周期长
  • 开源版本仅支持部分能力且不承诺任何保障
公司内部的工作流编排相关使用分析
需求场景工作流选型产品特点
Airbyte 数据同步引擎Temporal
  • 社区活跃,生态完善,有不少国外公司在用
  • 提供引擎 + web-ui 平台,可以开箱即用或者做少量的定制
  • 针对数据同步场景,具备非常好的水平扩展能力

云效部署、流水线发布

  • 适用于流水线的工作流引擎选型
camunda (Activiti 5 衍生)

BPMN2.0(图形编排能力)

  • Web-based tooling for BPMN, DMN, CMMN, and Forms | bpmn.io
  • https://www.omg.org/spec/BPMN/2.0/PDF
  • https://www.cnblogs.com/jiligalaer/p/4090118.html
  • https://www.cnblogs.com/garfieldcgf/p/13469519.html

zelus 定时任务调度平台

  • https://zhihu.kdocs.cn/l/cumPW2jYEOGE
  • 建设知乎云原生任务调度平台
依赖的是k8s 的组件 + argo-workflow
  • GitHub - argoproj/argo-workflows: Workflow Engine for Kubernetes

研发效能工具

  •  工作流引擎技术调研
activiti可以绘制流程图

RFC - 流程编排 - bpmn-js(LCDP)前端部分的流程编排方案

  • 工作流编排引擎技术RFC
  • BFF工作流编排引擎设计拆分

bpmn-js

  • 官网:Web-based tooling for BPMN, DMN, CMMN, and Forms | bpmn.io
  • DEMO:BPMN Editor | bpmn-js modeler Demo | demo.bpmn.io

有不错的扩展性和用户体验

  • 写在开始 | bpmn-js-doc

理解策略识别调度服务

dag 调度策略(有向无环图)

自研

  • 用户可以利用系统预置的节点以及自定义的节点组织流程。通过工作台、节点输出以及边的属性等获取组装参数,最终完成整个流程。
  • 会启动一个容器组来进行消息监听和消息处理,中心化的(产生的原因:区块链-公链)

星河 流程编排 SDK(StarRiver)

  • 反作弊 流程编排使用手册

如何选型

针对我们自身的开发效率、支撑能力、稳定性

  • 多异步事件

  • 服务可靠性低

  • 流程长繁杂

  • 复杂状态

工作流通常适用于,有状态的、异步、长时间执行等特性的业务场景,比较典型的场景包括

  1. 视频、音频、图片处理工作流

  2. 订单、审批流程

  3. 数据处理流水线

  4. 自动化运维

相关文章:

  • 基于docker容器化部署微服务
  • 云计算大屏,可视化云计算分析平台(云实时数据大屏PSD源文件)
  • 【Linux服务器Java环境搭建】09 在CentOS系统中安装和配置clickhouse数据库
  • Active Objects设计模式
  • Pandas实践_分组
  • 020 OpenCV 轮廓、外接圆、外接矩形
  • Postman-脚本自动化及定时执行脚本(7)
  • Mac 中文版 Navicat Premium 16 下载安装详细教程
  • LeetCode力扣每日一题(Java):58、最后一个单词的长度
  • 内网服务器部署maven私服简记
  • 微信小程序map视野发生改变时切换定位点
  • 案例055:基于微信小程序的四六级词汇
  • 服务器被DDOS攻击如何用高防ip去防护?
  • 小程序开发实战案例四 | 小程序标题栏如何设置
  • 微信小程序:布局样式
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Apache Spark Streaming 使用实例
  • CSS盒模型深入
  • gops —— Go 程序诊断分析工具
  • nginx 配置多 域名 + 多 https
  • nodejs调试方法
  • Redis中的lru算法实现
  • Spring Boot MyBatis配置多种数据库
  • Vue小说阅读器(仿追书神器)
  • 包装类对象
  • 服务器之间,相同帐号,实现免密钥登录
  • 聚类分析——Kmeans
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 问题之ssh中Host key verification failed的解决
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • AI算硅基生命吗,为什么?
  • #if 1...#endif
  • $refs 、$nextTic、动态组件、name的使用
  • (C#)获取字符编码的类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Note)C++中的继承方式
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校实验室 毕业设计 800008
  • (九)c52学习之旅-定时器
  • (全注解开发)学习Spring-MVC的第三天
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)nsfocus-绿盟科技笔试题目
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .net core 依赖注入的基本用发
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 反射的使用
  • .Net多线程总结
  • .NET微信公众号开发-2.0创建自定义菜单
  • @Not - Empty-Null-Blank
  • @Query中countQuery的介绍
  • @Service注解让spring找到你的Service bean
  • [C++随笔录] 红黑树