群集环境中的Spring Batch高可用性

时间:2018-07-28 05:19:49

标签: spring-boot spring-batch high-availability

现在,我将H2内存数据库用作单节点Spring Batch / Boot应用程序的JobRepostiry。

现在,我想在两个节点上运行Spring Batch应用程序,以提高性能(在这两个实例之间分配作业)并使该应用程序具有更多的故障转移。

我将使用PostgreSQL而不是H2并将两个应用程序配置为使用此共享数据库。这样就足以使Sring Batch能够开始在群集中正常工作并开始在群集节点之间分配作业,还是我需要执行一些其他操作?

1 个答案:

答案 0 :(得分:1)

根据您将如何在各个节点之间分配作业,除了共享作业存储库之外,您可能还需要设置通信中间件(例如JMS或AMQP提供程序)。

例如,如果使用远程分区,则将对作业进行分区,并且每个工作程序都可以在一个节点上运行。在这种情况下,必须共享作业存储库,以便:

  • 工人将他们的进度报告给工作库
  • 主控人员轮询作业存储库以获取工人状态。

如果作业是完全独立的,并且不需要重启等功能,则可以继续为每个作业使用内存数据库,并在不同节点上启动同一作业的多个实例。但是即使在这种情况下,我仍建议使用生产级作业存储库而不是内存数据库。在集群环境中,事情很快就会出错,拥有一个作业存储库来存储执行状态,同步执行,重启失败的执行等在这种环境下至关重要。