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

使用Java和Spring进行并行处理

姚臻
2023-03-14

我的Spring批处理作业每3分钟运行一次。

步骤应为

  1. 每个用户的记录应该并行执行。每个用户最多可以有150k条记录。
  2. 每个用户都可以有更新和删除记录。更新记录应在删除之前运行。
  3. 更新/删除集应该自己并行运行。但严格来说,所有更新都应该在删除之前完成。

有谁能提出在多个级别实现并行性的最佳方法,并遵循更新和删除级别的顺序吗。我正在研究Spring异步执行器服务、并行流和其他Spring库。Rx,仅当其提供了上述规定无法提供的某些显著性能时。

共有1个答案

燕智
2023-03-14

出色的性能基于spring批处理实现的设计,我们确信您将获得spring批处理,因为我们正在使用select delete and update处理数百万条记录。

  1. 每个用户的记录都应该并行执行。每个用户最多可拥有150万条记录。“根据用户对所选内容进行分区,每个用户将作为并行步骤运行。”
  2. 每个用户都可以更新和删除记录。更新记录应在删除之前运行。“创建复合编写器,并为更新Ist编写器和删除第二个编写器添加代理”
  3. 更新/删除集应自行并行运行。但严格来说,所有更新都应该在删除之前完成。“每个writer步骤更新和删除都管理事务,并确保首先执行更新”

请参考以下内容

Spring批式多工序重载,每道工序下多线程

复合编写器示例

Spring批处理-读取字节流,处理,写入2个不同的csv文件,将其转换为输入流并存储到ECS,然后写入数据库

 类似资料:
  • 我对Spring的靴子是陌生的,在它们到来的时候学习。我有一个关于并行API调用的快速问题。 我有一个ID数组,我将把它附加到第三方APIendpoint,发出GET请求,聚合数据,并在所有3000个调用完成后从中生成一个文件。 这里的问题是Array的大小为3000,即我预计会进行3000次调用。我觉得使用for循环并迭代超过3000次没有任何意义,而且效率较低。 有谁能给我建议一个最好、最有效

  • 我正在使用在每一行上执行一个函数,这需要很长时间,为了加快速度,有没有一种方法可以使用并行处理,使多个核心在不同的行上并发工作? 例如,我将PRISM天气数据(https://prism.oregonstate.edu/)聚合到州一级,同时按人口加权。这是基于https://www.patrickbaylis.com/blog/2021-08-15-pop-weighted-weather/. 请

  • 我已经创建了一个bean类,其中包含所有字段(name、amount、description和number),以及相同的getter和setter。productBeans有所有产品的列表。 groupByProduct具有用名称分组的产品列表。结果给出了以产品地图为关键,以产品总量为价值的产品地图。 但在这里,我试图将产品和总金额映射到产品列表中。我试图结合上面的代码来获得预期的输出,但未能实现

  • 我附上了一个应用程序的示例代码,它在我的Core i3 370M笔记本电脑上(Win 7 64bit,Java 1.8.0.4564bit)在大约20秒内重现了这个问题。这个应用程序读取识别文本蕴涵(RTE)语料库的XML文件,然后使用标准Java并发类同时解析所有句子。本地RTE XML文件的路径需要作为命令行参数给出。在我的测试中,我使用了以下公开的XML文件:http://www.nist.

  • 我有一个文件系统目录,我想轮询文件,然后并发处理每个文件,每个文件只有一个线程。我的印象是,在封面下,将每个文件放入队列中,这样我就可以使用下游的执行器通道来并发处理以后的调用。我在JavaConfig中实现如下: 执行器通道下游的每个通道本身就是一个直接通道。 然而,我发现下游服务的并发性很差。对于缓存的线程池,我看到相同的线程基本上是串行地执行下游代码,而如果使用固定的池执行器,我看到不同的线

  • 当我使用Spring批处理管理运行长时间运行的批处理作业的多个实例时,它会在达到jobLauncher线程池任务执行程序池大小后阻止其他作业运行。但是从cron中提取多个工作似乎效果不错。下面是作业启动器配置。 Spring批处理管理员Restful API是否使用不同于xml配置中指定的作业启动器?