Sharing Spring Cloud Data Flow’s Datastore with Tasks

正如 Tasks 文档中所讨论的,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 Sink 始终使用 Data Flow Server 配置的 Task 数据库。

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

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

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

tasklauncher-local 仅用于开发。

2.3. Composed Task Runner

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

Last updated