Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理并行作业扩展_Spring_Scalability_Spring Batch_Spring Integration - Fatal编程技术网

Spring批处理并行作业扩展

Spring批处理并行作业扩展,spring,scalability,spring-batch,spring-integration,Spring,Scalability,Spring Batch,Spring Integration,我目前正在开发一个Spring批处理POC,并且对大多数实际的Spring批处理特性都有很好的理解。我目前有一个程序,它使用Spring集成来接收HttpRequest,并使用消息通道最终将作业执行发送到队列中的作业启动器。我们真正想做的是在作业启动程序之前实现某种“调度器/负载平衡器”(不太确定如何称呼它),它将查看当前正在运行的工作节点和输入文件的大小,并决定作业应该允许多少工作节点。我们可能还希望能够在作业运行时更改其工作节点的数量,以允许更多作业运行 我们的想法是,我们将有一个运行的服务

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

我们的想法是,我们将有一个运行的服务器,可以在任何时候接受许多作业请求,并有一个大的机器集群,作业将被划分到其中。我们希望能够横向扩展,这样每当服务器不忙时,它就可以充分利用硬件,并且能够确保小作业不会经常被大作业阻塞

根据我的研究,似乎我们必须实现另一个框架来实现这一点(GridGain和Hadoop允许吗?),但我想我会询问人们建议做什么,以及是否有一种不实现另一个大框架的方法

抱歉,如果有什么不清楚或混乱的地方,我只是一个低级的实习生,上个月开始学习Spring和Spring Batch,我还远没有完全理解所有的东西,尤其是这个扩展的东西。问问我,我会把事情弄清楚的


谢谢你的帮助

看看SpringBatch管理伞下的“SpringBatch集成”项目

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

在spring集成论坛上有许多关于这个主题的帖子;搜索“PartitionHandler”


希望能有所帮助。

我实际上已经设置了一个分区处理程序,尽管它目前只是将步骤分发给本地线程。将其分发到工作节点并不需要太多更改。我只是不知道如何获取有关当前正在运行的工作节点数量的信息,以及如何处理所有节点都在使用且新作业被放入队列中的情况,我希望减少作业使用的工作节点数量,以便可以运行另一个作业。仅使用JMS和spring批处理集成就可以做到这一点吗?我对这个框架是如此陌生,以至于我并不真正了解所有的功能。有很多工具可供您使用。您可以发送控制消息来启动/停止每个节点上的入站端点,方法是使用-例如“@adapter.stop()”。这允许您控制特定队列上的使用者数量。您可以查询JobRepository以获取每个分区的步骤执行状态的当前状态;它不会提供有关它运行在哪个节点上的现成信息,但您可以将该信息添加到上下文中。