Sharing Spring Cloud Data Flow’s Datastore with Tasks

正如 Tasksarrow-up-right 文档中所讨论的,Spring Cloud Data Flow 允许用户查看 Spring Cloud Task App 的执行情况。因此,在本节中,我们将讨论 Task Application 和 Spring Cloud Data Flow 共享任务执行信息的相关内容。

1. Common DataStore Dependency

Spring Cloud Data Flow 支持许多开箱即用的数据库,因此使用者通常要做的是声明spring_datasource_*环境变量用来确认 Spring Cloud Data Flow 需要使用哪些数据库。因此,无论您决定将哪个数据库用于Spring Cloud Data Flow,都要确保您的 Task 在其pom.xmlgradle.build文件中包含该数据库依赖项。如果任务应用程序中不存在Spring Cloud Data Flow 使用的数据库依赖关系,则 Task 将失败,执行将不会被记录。

2. Common Data Store

Spring Cloud Data Flow 和 Task Applications 必须访问同一个数据库实例。这样,Spring Cloud Data Flow 可以读取 Task Applictaions 记录的任务执行,并且在 Shell 和Dashboard 视图中列出它们。此外,Task Applications 必须具有Spring Cloud Data Flow 使用的数据库中相关 Task 的表的读写权限。

基于对T ask Applications 和 Spring Cloud Data Flow 之间的 DataSource 依赖关系的理解,让我们回顾一下如何在各种Task Orchestration (任务编排)场景中应用它们。

2.1. Simple Task Launch

当 Spring Cloud Data Flow 启动了一个 Task ,Data Flow 会将它的数据源属性(spring.datasource.urlspring.datasource.driverClassNamespring.datasource.usernamespring.datasource.password)添加到正在启动过程中的 Task Applications 属性中。因此, Task Applications 会连接到 Data Flow 数据库中,并且将信息保存到对应的 Task 表中。

2.2. Task Launcher Sink

Task 启动时, Data Flow Task Launcher Sinkarrow-up-right 始终使用 Data Flow Server 配置的 Task 数据库。

Task Launcher Sink 是可以独自使用的,它支持您将 Task 执行信息存储在指定的单独数据库中。由于这些 Task Launchers 并不使用 Data Flow Server,因此它们运行再指定环境中,需要配置其他参数,包括数据源配置以及 Task Applications 的可执行jar的资源位置。此外,这种方式并没有像 Data Flow Task Launcher 那样提供限制并发运行任务数量的方法。

附加配置需要更复杂形式的 TaskLaunchRequestarrow-up-right 。由独立 Task Application Sink 处理的请求必须包含所需的数据源信息作为 Applicantions 属性或命令行参数。既 TaskLaunchRequest-Transformarrow-up-rightTriggerTask Sourcearrow-up-right 提供的例子。

目前,独立 tasklauncher Sink支持的平台是:

triangle-exclamation

2.3. Composed Task Runner

Spring Cloud Data Flow 允许用户创建 directed graph(有向图),其中图的每个节点都是一个 Task Applications ,这是通过 Composed Task Runner arrow-up-right完成的。在这种情况下,应用于 Simple Task Launcharrow-up-rightTask Launcher Sinkarrow-up-right 的规则也适用于 composed task runner。所有子 Applicatnion 必须能够访问 composed task runner 正在使用的数据库。此外,所有子 Applicatnion 必须具有与 Composed Task 相同的数据库依赖。

Last updated