当前位置: 首页 > 知识库问答 >
问题:

使用Spring批处理作业分发进行远程分块

凌智
2023-03-14

我在运行Spring批处理作业时遇到了一个技术问题。作业只是从DB(MongoDB)读取记录,对记录进行一些计算(聚合)并将记录结果写入另一个表。读取A、处理A、写入记录B B是A的许多记录的聚合。我想使用远程分块来垂直扩展我的系统,从而使处理部分缩放和快速。我面临的问题是,我需要同步A记录,以便在将结果写入B时处理它们不会发生冲突。如果我将10条A记录分发给4个从站,它们在将聚合结果写入B时会发生冲突。

有什么想法,如何在从主服务器向从服务器发送消息时添加同步策略?

提前感谢...

共有1个答案

诸葛苏燕
2023-03-14

如果您需要像您描述的那样同步数据,我建议不要使用远程分块,而是使用分区。这将允许您按分区,并消除您面临的同步问题。它还将提供额外的吞吐量,因为每个从机运行一个处理器(与远程分块相同)。

 类似资料:
  • 我们有一个用例,需要从一些分页的API读取数据,然后写入一些下游的Kafka主题。 我们已经能够通过Spring批处理集成远程分区来实现解决方案,其中管理器通过创建包含页码和偏移量以读取数据的执行上下文来处理任务的分区。管理器创建此执行上下文并将它们放在MessagingChannel上(我可以使用RabbitMQ和Kafka主题,以提供解决方案者为准)。工作人员(超过1个)从MessagingC

  • 试着看看我是否能设计一个既需要分区又需要远程分块的工作。我们可以有类似于表A的东西来保存行(表A中的一列将是分区键),对于表A中的每一行,我们将有表B,其中包含表A中给定外部/分区键的许多子记录。我们需要运行一个查询,根据查询过滤表a中的分区键,并为每个分区键处理表B中的所有子记录(这里我们在表B中也会有数百万条记录,因此我们需要并行处理记录,从而实现远程分块) 对于这样的事情,什么是正确的思考s

  • spring批处理远程分块和远程分区之间有什么区别? 我无法理解spring batch中远程分块和远程分区之间的区别。谁能解释一下吗?

  • 我在同一jboss应用服务器中部署了两个WAR:- WAR1-->拥有作业启动程序和作业相关服务 我对spring batch(WAR1)和spring batch admin(WAR2)都使用了相同的DB存储库。 我可以通过使用Spring Batch Admin访问所有与作业相关的状态,但我遇到了如何触发WAR1中部署的作业的问题, 我也可以用下面的URL在WAR1中创建rest Web服务

  • 我们在POC中使用远程分区,处理大约2000万条记录。为了处理这些记录,slave需要一些大约5000行的静态元数据。我们当前的POC使用EhCache从数据库一次将元数据加载到从机中,并将其放入缓存中,这样子用户调用就可以从缓存中获取这些数据,从而获得更好的性能。 现在,由于我们使用远程分区,我们的从机大约有20个MDP/线程,因此每个消息侦听器首先调用以从数据库获取元数据,因此基本上每个远程机

  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。