Spring RESTful Web服务 - 高容量数据处理

时间:2016-05-30 13:01:47

标签: spring rest spring-boot spring-batch

我正在尝试构建一个Spring / Spring Boot-RESTful Web服务,

  1. 它接受每行中包含100万行/ 40列的CSV文件作为输入(来自基于角度的前端)并且将是同步调用。在继续进入其他屏幕之前,必须通知用户上传状态。所以,等待时间不能超过几分钟(比如说5分钟)。

  2. 这些行中的每一行都必须针对DB中的内容进行验证,如果发现有效,则会将相同的行插入到DB中。简而言之,每行可以是单独的独立事务。

  3. 您能否建议一下实施此方法的最佳方法是什么?

    当前的遗留系统在存储过程中实现了相同的功能,这使得解决方案与数据库紧密耦合,如果需要在线路上更改RDBMS,这将是一个问题。

    1. 在异步Web服务调用中以块(例如20k)处理这100万个数据的方法是什么?

    2. 春季批次?

    3. 存储过程是否可以比上述两个选项更合适,性能更好(猜不行!)?

    4. 请您帮助解决一些方法,该方法至少与存储过程一样好,以及如何根据建议的解决方案进行水平扩展。

1 个答案:

答案 0 :(得分:1)

您使用三个建议的选项走在正确的轨道上。不幸的是,你的问题的答案是取决于

上述任何一种方法都适合您。我个人更喜欢Spring Batch,因为我发现编程模型简单直观。

Spring Batch Processing Guide

另一种方法是使用Messaging来并行处理行:

  1. Controller接收包含大量数据的CSV文件
  2. 将数据拆分为较小的部分并发送到临时的Message Queue
  3. 多个工作节点接收消息并处理它们
  4. 监控临时队列的大小并相应地更新用户(已完成%)
  5. 简而言之,您对自己领域的了解最终将指导您为您的业务寻找最佳解决方案。