高性能工作流引擎:DataBuilder与polaris

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

DataBuilder与polaris DataBuilder框架是高性能工作流引擎,可用于执行多步骤工作流。它支持多种场景,如结账系统、API网关等。该框架具有注释元数据处理、动态生成执行图、循环和瞬态数据支持等特征。它可以以请求范围内的流或跨多个请求的流程两种模式使用。在执行过程中,数据会被动态生成并最终生成目标数据。该框架的使用方法包括创建数据类、注册构建器元数据、构建数据流等。

🔎

延伸解读

两种执行模式:请求内与跨请求

DataBuilder支持请求范围内的流和跨多个请求的流程。请求内模式适合单次调用完成的多步骤工作流,如API网关聚合数据;跨请求模式则用于需要多次交互的场景,如结账流程,每次调用传入增量数据,系统累积并逐步生成目标数据。选择时需根据业务是否需保持会话状态及执行是否可中断来决定。

动态执行图与低开销设计

框架通过注解元数据处理和动态生成执行图,根据构建器的消耗与产生数据自动编排执行顺序。单线程执行器开销仅20微秒,适合高性能场景。这种设计让组件可复用且灵活组合,但需注意元数据注册的准确性,否则可能导致执行图错误或循环依赖。

版本控制与向后兼容挑战

工作流版本控制是主要局限。部署新代码时,必须确保与未完成的工作流向后兼容,否则可能中断执行。通常需先部署兼容旧流程的版本,待旧流程结束后再清理过时代码。若无法承受停机,需谨慎规划部署策略,避免活动工作流无法达到最终状态。

与Cadence、Conductor的抽象层级差异

相比Cadence和Conductor,DataBuilder抽象级别较低,不内置故障恢复和监控。若需忽略故障,需依赖外部可靠服务的回调;监控则需通过监听器自定义实现。这提供了更大灵活性,但也要求开发者自行处理容错和可观测性,适合对性能和控制力有较高要求的团队。

❓

Q&A

DataBuilder框架是什么?它主要用于哪些场景?

DataBuilder框架是一个高性能工作流引擎,用于执行多步骤工作流。它目前为Flipkart的结账系统以及诊断和其他工作流程提供支持。适用于多步骤工作流程执行、执行可跨越一个或多个请求范围、系统使用可重复使用的组件等场景。

DataBuilder框架有哪些显著特征?

显著特征包括:为构建者提供基于注释的元数据处理;数据流分析器和构建器根据提供的元数据和目标动态生成执行图;支持在一个执行范围的上下文中有意义的循环和瞬态数据;单线程和多线程数据流执行器;极低的开销(单线程执行器为20 usec);公开低级和高级API,用于动态注册构建器和目标以及构建流程;大量测试用例,涵盖框架的各个方面。

DataBuilder框架可以以哪两种模式使用?

该框架可以以两种模式使用:请求范围内的流和跨多个请求的流程。

在请求范围内的基本流程中,需要执行哪些步骤?

请求范围内的基本流程包括:识别和创建数据类;创建构建器;注册构建器元数据(消耗、产生);构建(并可选择保存)指定目标数据的数据流;开始接受请求;创建数据流实例;接受数据增量中的输入数据;使用增量执行数据流。

跨多个请求执行流程时,系统在什么情况下会停止?

系统在以下情况下停止:流的目标数据已生成;迭代中没有生成新数据。

DataBuilder框架有哪些局限性?

局限性包括:工作流版本控制实施起来很棘手,除非能够承受100%的停机时间,确保所有活动工作流程进入最终状态,否则部署新代码需要确保向后兼容性;与Cadence、Conductor相比,该框架的抽象级别较低。

➡️

继续阅读