【问题标题】:do I need one JVM process for each spring cloud tasktrigger?每个spring cloud tasktrigger都需要一个JVM进程吗?
【发布时间】:2017-12-19 13:56:24
【问题描述】:

今天,我们有许多批处理作业,它们通过单个应用程序中的 cron 表达式进行调度。我们希望更多地隔离这些工作,因此将它们移至 Spring Cloud 任务。

但是阅读文档 [1],我得出的结论是,我必须使用 triggertask(源),然后将 TaskLaunchRequest 发送到 tasklauncher(接收器)以最终启动新进程.

这意味着(如果我只有一个任务/批处理)我至少需​​要运行以下 JVM 进程来触发一个新进程:

  • 流服务器
  • 触发任务(来源)
  • 任务启动器(接收器)

好的,流服务器和 tasklauncher 将为任何即将到来的任务共享,但 triggertask 只能为单个任务获取 cron 定义,因此必须为任何即将到来的任务定义进行复制。所以每项任务至少需要一个“保姆进程”?

真的吗???这听起来有点矫枉过正......从我的角度来看,我希望 cron 调度是任务定义的核心功能,所以唯一需要的是流服务器。

我是否理解正确或有什么我遗漏的?在 Spring Cloud 环境中是否有更简单的方法可以做到这一点?我真的很喜欢让流服务器在需要时启动新的 JVM 的想法,但是所有这些额外的过程确实感觉是错误的方法。

如果这应该在 CloudFoundry 上运行,例如http://run.pivotal.io 那么这意味着我有一个用于单个作业的 cron 调度程序,成本为 35 美元/月(因为从 Java BuildPack 4.0 开始,只有 512MB 的 JVM 进程将不再启动 [2])——这是一个昂贵的 cron 定义......

[1]https://github.com/spring-cloud/spring-cloud-stream-app-starters/tree/master/triggertask/spring-cloud-starter-stream-source-triggertask [2]https://www.cloudfoundry.org/just-released-java-buildpack-4-0/

【问题讨论】:

    标签: spring cloud-foundry spring-cloud spring-cloud-stream spring-cloud-task


    【解决方案1】:

    TL;DR; 不要那样做,要么编写自己的调度逻辑,要么将 Spring Cloud Data Flow 的 REST API 与您的企业调度程序集成。

    长版
    让我介绍一下这方面的历史,然后提供我的想法。

    当 Spring Cloud Task 项目启动时,我们想要创建一些示例应用程序来说明许多不同用例中的任务用法。能够根据收到的消息轻松启动任务是我们确定的一个用于创建样本的用例。您可以看到该示例 herehere

    当 Spring Cloud Data Flow (SCDF) 出现时,我们希望能够以某种方式解决的用例之一是调度任务。问题是我们希望 SCDF 服务器是无状态的(因为它本身就是一个云原生微服务)。这意味着嵌入调度程序不是一种选择。从那里我们觉得与每个平台为调度提供的集成是最有意义的。然而,它也需要最多的工作。这种方法实际上在我们的路线图上,但我们还没有得到用户反馈来将该功能推到更高的位置。

    我们在短期内解决此要求的解决方案就是您今天在文档中找到的解决方案。将这些示例应用程序与 trigger-task 应用程序结合使用,该应用程序处理 cron 难题以在给定时间启动任务。

    我个人的建议是,如果您没有已经使用的调度程序,请编写一个使用 Quartz 或其他一些内部调度程序(Spring Scheduler 等)的 Boot 应用程序来调用 SCDF API 以启动任务给定的时间表。鉴于DataFlowTemplate 可用,编写自己的调度程序应该很简单。

    【讨论】:

    • 非常感谢您提供这些详细信息!因此,如果我理解正确,将来会有原生调度程序集成,在我们的例子中,无论如何来自 CF?有什么我可以关注的问题吗?
    • 嗨,@Domi。特别是对于 CF,CF-Scheduler 的 MVP 正在开发中,它将能够通过 SCDF 的 REST-API 调度和启动任务。这个想法是在 SCDF 中定义 DSL,并使用 CF-Scheduler 中的 REST-API 将其安排到所需的日期/时间或 cron。 CF-Scheduler 团队的目标大致是 8 月份的 GA 版本。我们还计划从 SCDF 直接(通过其 API 和服务绑定)与 CF-Scheduler 交互。我们的仪表板将能够为每个任务提供日期/时间和 cron 表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2011-07-09
    • 2013-10-26
    • 2013-08-05
    • 2019-11-13
    • 2017-07-05
    相关资源
    最近更新 更多