回答你的问题:
- Spring Cloud Task是否处理编排 - 否.Spring Cloud Task不处理任务或作业的编排。处理任务或作业的部署/编排的生态系统中的组件实际上是Spring Cloud Data Flow(这就是为什么我问你是否使用任何类型的云平台,包括YARN,Cloud Foundry,Kubernetes或Mesos ......环境由Spring Cloud Data Flow支持。
- Spring Cloud Task通过Spring Boot / Spring Batch提供了什么附加值 - Spring Cloud Task旨在提供以下几点:
- Spring Batch关于状态管理的类似功能,无需创建批处理作业。在云环境中运行Boot应用程序时,没有标准方法可以将结果从环境转移到环境(YARN处理作业结果的方式与Cloud Foundry上的任务不同,后者与Kubernetes上的作业不同,等等)。 Spring Batch提供了这个功能,但现在所有短期流程都需要Batch API的开销,因此Spring Cloud Task为这些用例提供了更轻松的触摸。
- 自动添加信息侦听器。使用Spring XD,当您在XD容器中运行作业时,XD容器会自动添加许多信息侦听器,以广播您可以侦听的事件。 Spring Cloud Task在不需要XD容器的情况下提供相同的功能。
- 与Spring Cloud Stream集成。 Spring Cloud Task提供从Spring Cloud Stream接收的消息启动任务的功能。此外,之前提到的信息性消息(批处理事件和任务事件)都是通过Spring Cloud Stream通道发送的。
-
DeployerPartitionHandler
。在云环境中工作时,此PartitionHandler
实现允许您将分区批处理作业的工作人员作为任务启动。这允许动态扩展分区批处理作业,而不是预先部署工作人员来监听在现代云环境中浪费资源的工作。
- 多个任务的打包如何与依赖关系一起使用 - 简而言之,建议不要这样做。 Spring Cloud Task的想法是Spring Boot应用程序的执行是Task。虽然您可以打包多个任务并使用不同的方法,但让它们基于不同的刺激执行,这违背了正确使用Spring Cloud Task所必需的12因素应用程序概念。
醇>
我的两分钱
对于现代批处理平台的最佳选择,您需要首先从平台中查看一些,然后从Cloud Foundry / Kubernetes / Mesos / YARN层开始。如果没有这些,您最终会自己构建大部分基础架构。这就是Spring XD演变为Spring Cloud Data Flow的原因。通过要求运行现代平台来消除Spring XD容器中增加的复杂性(因为它们都自己处理这些保证)。如果没有这一部分,您将花费大量时间来管理大多数现代平台为您处理的应用程序的部署和编排。
从那里开始,选择变得非常简单恕我直言,Spring Cloud Task用于简单任务,Spring Batch用于批量作业,Spring Cloud Data Flow用于编排。