我必须将文档管理服务实现为编排层,该编排层在底层服务之间进行编排,如存储、解析、防病毒扫描等。要求该层具有灵活性,以便可以快速实现不同类型文档的不同流
一种方法是将其建模为事件驱动系统,并使用Apache Flink等框架在事件上实现处理管道。
另一种思考方式是--工作流。将其设计为在Apache Airflow或Uber Cadence等工作流引擎上运行的工作流。
什么是更好的方法。
发布于 2019-10-23 12:41:44
免责声明:我是Temporal Workflow的技术负责人,也是Cadence Workflow的前技术负责人。但我使用know something about Flink和Airflow :)。
使用Flink实现编排是相当困难的。原因是Flink是一种流处理解决方案,它针对每个请求的快速处理进行了优化。编排应该处理缓慢的请求或长时间停机的服务。Flink不支持这种开箱即用的方案。它还将流程建模为静态图形,而编排通常是一个非常动态的状态机。
气流也是基于静态图形的。因此,它并不真正适合于不适合其DAG范式的复杂场景。Airflow更严重的问题是它的可扩展性非常有限。这就是为什么我从来没有听说过它被用于数据管道控制平面之外的服务编排,那里并不真正需要可伸缩性。
时态工作流从一开始就是作为一个非常动态和高度可扩展的编排系统构建的。在许多依赖时间的公司的生产中,有许多高吞吐量的服务编排用例。其中一些列在case studies中。
发布于 2019-10-24 20:30:05
有些人在Flink上构建平台,这些平台支持的用例更像你所描述的,而不是直接使用Flink本身完成的。特别是,我想建议你看看Stateful Functions,这是Flink的创建者Ververica的一个新的开源库。根据我对你的需求的理解,这似乎是一个很好的选择。
Cogynt是这种趋势的另一个例子,这种趋势是在Flink之上构建平台来支持使用Flink本身难以实现的用例,同时利用其高性能、容错、只需一次的流处理引擎。
免责声明:我为Ververica工作。
https://stackoverflow.com/questions/58511069
复制相似问题