常见的工作流编排引擎

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

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

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. 自动化运维

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决文件默认打开程序选择被联想管家劫持

问题描述 当选择文件右键->“打开方式”->“选择其他应用”时,弹出了联想电脑管家的软件安装推荐。一不小心就会下载了它推荐的软件。特恶心。 问题原因 这个推荐软件的程序,是联想开发的一个叫“LeASOpen”的垃圾软件。联想把系统右键菜单“选…

Java面试题1-10

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto? java中的保留字&am…

K8S(七)—污点、容忍

目录 污点、容忍污点(Taints):容忍(Tolerations):如何一起使用污点和容忍:操作符(Equal、Exists)例子基于污点的驱逐基于节点状态添加污点 污点、容忍 官网地址&#xf…

【大数据】详解 AVRO 格式

详解 AVRO 格式 1.Avro 介绍2.schema2.1 原始类型2.2 复杂类型2.2.1 Records2.2.2 Enums2.2.3 Arrays2.2.4 Maps2.2.5 Unions2.2.6 Fixed 3.Avro 的文件存储格式3.1 数据编码3.1.1 原始类型3.1.2 复杂类型 3.2 存储格式3.3 存储格式 4.小结 1.Avro 介绍 Apache Avro 是 Hadoop…

three.js(一)

文章目录 three.js环境搭建正文补充 示例效果知识点补充1:一个标准的html知识点补充2:原生的前端框架和Vue框架的区别原生的前端框架Vue框架声明式编程和响应式编程 three.js环境搭建 正文 搭建 Three.js 的环境通常包括以下几个步骤: 1.创建项目目录&#xff1a…

Spark读写MySQL数据库

Spark读写MySQL数据库 文章目录 Spark读写MySQL数据库一、读取数据库(一)通过RDD的方式读取MySQL数据库(二)通过DataFrame的方式读取MySQL数据库 二、添加数据到MySQL(一)通过RDD的方式插入数据到MySQL&…

初级数据结构(三)——栈

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;二&#xff09;——链表 | 初级数据结构&#xff08;四&#xff09;——队列 下一篇-> 1、栈的特性 1.1、函数栈帧简述 即使是刚入门几天的小白&#xff0c;对栈这个字…

基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

基于SSM实现的精品课程网站

一、系统架构 前端&#xff1a;jsp | js | css | jquery | bootstrap 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. web端-首页 03. web端-视频教程 04. web端-资料…

RK3568全国产化多网口板卡带poe供电,支持鸿蒙麒麟系统

信迈XM-3568-01主板采用瑞芯微RK3568四核Cortex-A55 处理器&#xff0c;主频最高可达2.0GHz&#xff0c;效能有大幅提升最高可配8GB内存容量&#xff0c;频率高达1600MHz&#xff1b;支持全链路ECC&#xff0c;让数据更安全可靠配置双千兆自适应RJ45以太网口&#xff0c;并扩展…

Unity | Shader基础知识(第三集:案例<对材质颜色进行干预>)

一、本节介绍 上一集&#xff0c;我们学到&#xff0c;shader的语法格式&#xff0c;这一集&#xff0c;我们要学习第二简单的shader案例&#xff0c;对shader颜色的简单干预。 二、理论介绍 1.获取位置信息 Unity | Shader基础知识&#xff08;什么是shader&#xff09;_u…

stm32---串口使用

### 串口数据发送 #include <string.h> //先引用这个字符串操作库。char str[]" HALLO WORD "&#xff1b; //定义这个数组字符串。HAL_UART_Transmit(&huart2, str, strlen(str), 100); //&huart2,这里他是一个指针&#xff0c;所以要用取地址符…

使用python的socketserver使服务器支持多客户端访问

1 背景 近期在做机器人集群的分布式控制&#xff0c;涉及到了机器人之间的交流工作&#xff0c;其中&#xff0c;每一台机器人都需要与多个机器人进行交流。 考虑使用python的socket来做&#xff0c;但简单测试了一下&#xff0c;socket模块不能方便的实现一个服务器与多客户…

C_9练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) C语言程序中,要使用数学库函数(例sqrt、sin等),需要在程序最前面加上包含文件的预处理命令&#xff08;C)。 A. #include &l…

java内部类的使用

什么是内部类&#xff1a;在一个类的内部定义的类称为内部类 为什么用内部类&#xff1a;完成某些功能只在某个具体的外部类中使用&#xff0c;其他地方不需要再使用&#xff0c;这是可以将此功能定义在一个内部类中&#xff0c;而不需要单独创建一个类。 用内部类的好处在内…

在WPF窗口中增加水印效果

** 原理&#xff1a; ** 以Canvas作为水印显示载体&#xff0c;在Canvas中创建若干个TextBlock控件用来显示水印文案&#xff0c;如下图所示 然后以每一个TextBlock的左上角为中心旋转-30&#xff0c;最终效果会是如图红线所示&#xff1a; 为了达到第一行旋转后刚好与窗口…

日常记录软件操作

webstorm下载集成码云步骤 1&#xff1a;file>>>settings>>plugins &#xff0c;在marketplace&#xff0c;下载gitee&#xff1b; 2&#xff1a;重启编辑器 3&#xff1a;file>>>settings>>>version control >>> gitee ,添加对应用…

App防止恶意截屏功能的方法:iOS、Android和鸿蒙系统的实现方案

防止应用被截图是一个比较常见的需求&#xff0c;主要是出于安全考虑。下面将分别为iOS&#xff08;苹果系统&#xff09;、Android&#xff08;安卓系统&#xff09;及HarmonyOS&#xff08;鸿蒙系统&#xff09;提供防止截屏的方法和示例代码。 在企业内部使用的应用中&…

物联网架构之CDH

1、常规初始化操作 三个节点都需要执行 hostnamectl set-hostname cdhmaster yum -y install vim lrzsz net-tools cat >>/etc/hosts<<EOF 192.168.180.210 cdhmaster 192.168.180.200 cdhslave01 192.168.180.190 cdhslave02 EOF systemctl stop firewalld.s…

深入解析Freemarker模板引擎及其在Spring Boot中的高级整合

目录 引言1. Freemarker1.1.什么是Freemarker1.2 Freemarker模板组成部分1.3.优点 2. Spring Boot整合Freemarker2.1 配置2.2 数据类型 3. 案例总结 引言 Freemarker作为一款强大的模板引擎&#xff0c;与Spring Boot的整合能够极大地提升Web应用的开发效率和灵活性。本篇博客…