如何使用Spring Cloud Task

时间:2016-07-19 01:56:30

标签: spring spring-boot spring-batch spring-cloud spring-cloud-task

我们计划淘汰现有的旧Java批处理应用程序,并使用最新的可用批处理框架重新创建它。 鉴于我们有大量的批处理作业需要现代化,我们正在寻找一个允许我们的框架或架构

  1. 开发一个批处理解决方案,允许我们在创建新批处理时动态部署它,而不会干扰现有的已部署应用程序。 - Spring cloud Task是否提供此功能。注意:我们只希望将应用程序部署到本地服务器,而与云无关。
  2. 如果Spring Batch / Boot能够为我们提供批处理应用程序通常所期望的功能,那么Spring Cloud Task的特殊增值是什么? - 我无法从在线提供的Spring文档中完全理解这一点。
  3. 从Spring Cloud Task的文档中,我能够理解它允许应用程序在其中包含许多任务。如果每个任务都有自己的库依赖项,那么我该怎么办?这可能与其他任务的依赖项相矛盾?那么在这种情况下,如果这些任务中的每一个都转移到一个新的应用程序,或者这个有解决方法吗?

1 个答案:

答案 0 :(得分:10)

回答你的问题:

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

    从那里开始,选择变得非常简单恕我直言,Spring Cloud Task用于简单任务,Spring Batch用于批量作业,Spring Cloud Data Flow用于编排。