使用 Spring Cloud DataFlow 在无限 运行 应用程序中编排长 运行 外部批处理作业是否合适?

Is it sutable to use Spring Cloud DataFlow to orchestrate long running external batch jobs inside infinite running apps?

我们有 String Batch 应用程序,每个应用程序中都定义了触发器。

每个 Batch 应用程序运行数十个具有不同参数的类似作业,并且能够以每个应用程序 1400 MiB 的内存来完成。

我们使用 Spring 多年前已弃用的 Batch Admin 来启动单个作业并简要了解作业中的情况。迁移指南建议将 Spring Batch Admin 替换为 Spring Cloud DataFlow。

Spring Cloud DataFlow 文档介绍了如何从 Maven 存储库中获取 jar 并 运行 它带有一些参数。我不喜欢等待应用程序下载 20 秒,应用程序启动 2 分钟以及所有 security/certificates/firewall 问题(我如何通过 Intranet 下载专有 jar?)。

我想通过 IP/port 在 Spring Cloud DataFlow 中注册现有应用程序,并将作业定义传递给 Spring 批处理应用程序并监控执行(包括停止作业的能力)。 Spring Cloud DataFlow 可用于此吗?

这里没有什么要拆包的。这是一个尝试。

Spring Cloud DataFlow docs says about grabbing jar from Maven repo and running it with some parameters. I don't like idea to wait 20 sec for application downloading, 2 min to application launching and all that security/certificates/firewall issues

是的,有一个应用程序解析过程。但是,一旦下载,我们将重用 Maven 缓存中的应用程序。

至于2mins bootstrapping window,这取决于Boot和配置对象的数量,当然还有你的业务逻辑。也许你的情况就是 2 分钟。

how can I download proprietary jar across intranets?

有一个选项可以通过 proxies 解析托管在防火墙后面的 Maven 人工制品 - 我们有用户使用这种专有 JAR 模型。

Each Batch application runs tens of similar jobs with different parameters and is able to do that with 1400 MiB per app.

您可能需要考虑 Composed Task 功能。它不仅提供了将子任务作为有向无环图启动的能力,而且还允许基于每个节点的退出代码进行转换,以进一步拆分和分支以启动更多任务。当然,所有这些都会在每个执行级别自动记录,以便从 SCDF 仪表板进行进一步跟踪和监控。

I'd like to register existing applications in Spring Cloud DataFlow via IP/port and pass job definitions to Spring Batch applications and monitor executions (including ability to stop job).

就批处理作业被包装到 Spring Cloud Task Apps 而言,是的,您可以在 SCDF 中注册它们并在 DSL 中使用它或将它们拖放到可视化中canvas,以创建连贯的数据管道。我们有一些 "batch-job as task" 个样本 here and here