Spring Batch Parallel Job Scaling

我目前正在开发一个Spring Batch POC,并且对大多数实际的Spring Batch功能都有很好的处理能力 . 我目前有一个程序使用Spring Integration来接收HttpRequest并使用消息通道最终将作业执行发送到队列中的作业启动器 . 我们真正想做的是在作业启动器之前实现某种“调度程序/负载均衡器”(不太清楚要调用它),该作业启动器将查看当前正在运行的工作节点以及输入文件的大小并使应该允许作业有多少工作节点的决定 . 我们可能还希望能够在作业运行时更改作业的工作节点数,以允许运行更多作业 .

我们的想法是,我们运行的服务器可以随时接受许多作业请求,以及将作业分区到的大型机器集群 . 我们希望能够横向扩展,因此每当服务器不忙时,它就可以充分利用硬件,并且能够确保小型作业不会被大型作业不断阻挡 .

根据我的研究,似乎我们必须实现另一个框架才能做到这一点(GridGain和Hadoop是否允许这样做?)但是我想我会要求看看人们推荐做什么这样的事情,如果有办法的话没有实现另一个大框架就可以做到这一点

对不起,如果有什么不清楚或令人困惑,我只是一个低级实习生,上个月开始学习Spring和Spring Batch,我远远没有完全理解一切,特别是这个缩放的东西 . 请问,我会尽力清理 .

谢谢你的帮助!

回答(1)

2 years ago

看一下spring-batch-admin伞项下的'spring-batch-integration'项目https://github.com/SpringSource/spring-batch-admin

它有许多使用spring-integration将工作分配给其他节点的例子 . 特别是看到块和分区包 . 只需用jms通道适配器更换 spring 集成通道即可 . 通过JMS分发工作分区,您可以根据需要扩展工作节点的数量 .

Spring 季整合论坛上有很多关于这个主题的主题;搜索'PartitionHandler' .

希望有所帮助 .