Architecture 工作流引擎和事件流框架是否是业务流程层的备选方案?

Architecture 工作流引擎和事件流框架是否是业务流程层的备选方案?,architecture,workflow,system-design,event-driven-design,Architecture,Workflow,System Design,Event Driven Design,我必须将文档管理服务作为编排层来实现,该编排层在底层服务(如存储、解析、防病毒扫描等)之间进行编排。要求是使该层具有灵活性,以便可以快速实现不同类型文档的不同流 一种方法是将其建模为事件驱动系统,并使用类似ApacheFlink的框架在事件上实现处理管道。 另一种思考方法是工作流。将其设计为在工作流引擎(如Apache Airflow或Uber Cadence)上运行的工作流。 什么是更好的方法。免责声明:我是Cadence Workflow的技术负责人和前技术负责人。但我和他:) 使用Flin

我必须将文档管理服务作为编排层来实现,该编排层在底层服务(如存储、解析、防病毒扫描等)之间进行编排。要求是使该层具有灵活性,以便可以快速实现不同类型文档的不同流
一种方法是将其建模为事件驱动系统,并使用类似ApacheFlink的框架在事件上实现处理管道。
另一种思考方法是工作流。将其设计为在工作流引擎(如Apache Airflow或Uber Cadence)上运行的工作流。

什么是更好的方法。

免责声明:我是Cadence Workflow的技术负责人和前技术负责人。但我和他:)

使用Flink实现编排是相当困难的。原因是Flink是一种流处理解决方案,针对每个请求的快速处理进行了优化。编排应该处理缓慢的请求或长时间停机的服务。Flink不支持这种开箱即用的场景。它还将处理建模为静态图,而编排通常是一个非常动态的状态机

气流也基于静态图形。因此,它并不真正适用于不适合其DAG范式的复杂场景。气流更严重的问题是它的可扩展性非常有限。这就是为什么我从未听说它被用于数据管道控制平面之外的服务编排,而在数据管道控制平面之外,并不真正需要可伸缩性


时态工作流从一开始就是作为一个非常动态和高度可扩展的编排系统构建的。优步和外部的生产中有许多高吞吐量的服务编排用例依赖于时态。例如,每当有人按下Uber应用程序中的“Tip Driver”按钮时,就会启动一个临时工作流来协调事务。

有人在Flink之上构建平台,支持您描述的用例,而不是直接使用Flink本身。特别是,我想建议您看看,这是一个新的开源库,来自Flink的原始创建者Ververica。从我对您的需求的了解来看,这似乎是一个很好的选择

是这种趋势的另一个例子,即在Flink之上构建平台,以支持Flink本身难以实现的用例,同时利用其高性能、容错、一次性流处理引擎


免责声明:我为Ververica工作。

如何区分静态图形和动态图形?您能用一个例子来说明吗?例如,第一个活动返回要执行的操作列表,然后工作流执行这些操作。但更简单的例子是当算法的迭代次数事先未知时的ML学习。