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

2024-04-13

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

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

  2. 这些行中的每一行都必须根据数据库中的内容进行验证,如果发现有效,则将其插入到数据库中。简而言之,每一行都可以是一个单独的独立事务。

您能否建议实现此目的的最佳方法是什么?

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

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

  2. 春季批次?

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

您能否帮忙提供一些至少与存储过程一样好的方法以及如何根据建议的解决方案进行水平扩展。


您的三个建议选项是正确的。不幸的是,你的问题的答案是,这取决于.

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

Spring 批处理指南 http://spring.io/guides/gs/batch-processing/


另一种方法是使用消息传递 http://spring.io/guides/gs/messaging-rabbitmq/并行处理行:

  1. 控制器接收包含大量数据的 CSV 文件
  2. 将数据分割成更小的块并发送到临时消息队列
  3. 多个工作节点接收消息并处理它们
  4. 监控临时队列的大小并相应更新用户(完成百分比)

简而言之,您对自己领域的了解最终将引导您找到适合您业务的最佳解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring RESTful Web 服务 - 大容量数据处理 的相关文章

随机推荐

  • HttpContext.Authentication.SignOutAsync 不会删除身份验证 cookie

    根据 ASP NET Core文档 https learn microsoft com en us aspnet core security authentication cookie方法HttpContext Authentication
  • 在 C# 中使用 Moq 进行模拟

    我有以下代码 public interface IProductDataAccess bool CreateProduct Product newProduct Class ProductDataAccess实现该接口 public cla
  • 使用 JavaScript 获取资源的传输大小

    我正在尝试测量真实网站用户的页面加载性能 为了更好地理解数据 我想根据缓存是否已启动来对数据进行分段 因此 在加载资源之前我不需要知道它是否在缓存中 事后衡量就足够了 至少在 Chrome 和 Firefox 中 开发工具的 网络 选项卡有
  • 当鼠标悬停在一个列表元素上时,jQuery 使其他列表元素淡入淡出/变暗,我在那里 90%..?

    我有一个无序列表 其中可能有 30 项 当将鼠标悬停在其中一项上时 其余列表项会淡出至 30 而悬停的项目将保持 100 当你离开列表时 它们都会恢复到 100 我已经做到了 当您从一个项目移动到另一个项目时 我的问题就出现了 其他列表项目
  • 删除 WSO2 1.10.0 中的弱化协议

    我有一个答案 可以禁用 Tomcat 中管理控制台不需要的协议 密码 基于 TLSv1 0 和 3DES 的密码 端口 9443 禁用 WSO2AM 1 10 0 中的弱化协议 密码 https stackoverflow com ques
  • SAS SQL 传递

    我想知道在这段代码中 SAS SQL 传递中首先执行的是什么 Connect To OLEDB As MYDB DBConnect Catalog MYDB Create table MYDB extract as select put P
  • JVM 语言中的嵌套函数和词法作用域是如何编译的?

    作为我的问题的具体示例 这里有一个 Python 代码片段 它应该对最广泛的人来说是可读的 并且无论如何都有 JVM 实现 def memo f cache def g args if args not in cache cache arg
  • 如何使用 pyplot 在曲面图后面画一条线

    我想在用曲面图绘制的圆环内画一条线 这条线在圆环内部不应该是可见的 就像圆环的内侧一样 只能在圆环的 末端 看到 我切掉了圆环的一半 然而 我绘制的线随处可见 正如您在图中看到的那样 我使用了以下代码 import numpy as np
  • Windows XP 上 WPD/WIA 的替代品?

    WPD http www microsoft com whdc device wpd default mspx在 Windows XP SP1 如果重要的话 上无法正常工作 即使微软表示确实如此 http msdn microsoft co
  • 延迟加载 WPF 选项卡内容

    我的 WPF 应用程序被组织为 TabControl 每个选项卡包含不同的屏幕 一个 TabItem 绑定到需要一点时间加载的数据 由于此 TabItem 代表用户可能很少使用的屏幕 因此我希望在用户选择该选项卡之前不加载数据 我怎样才能做
  • Android:应用程序范围内的字体大小首选项

    是否可以对所有显示文本的视图使用的字体大小进行应用程序范围的设置 我想向用户提供一个首选项 该首选项应该允许缩放应用程序中的所有文本 Android 明确允许使用 sp 尺寸单位 http developer android com gui
  • 将 JSON 字符串存储在输入字段值中

    如何将 Json 字符串存储在隐藏的输入字段中 好吧 我可以通过编程来做到这一点 但是转义有问题 由于我的字符串相当长 因此很难对所有名称转义 char 请解释它如何以编程方式工作 第 1 阶段 因为控制台输出看起来相同 X 0 Y 0 W
  • 将 Azure Files 文件夹挂载到 Kubernetes 中?

    As 直接安装 https learn microsoft com en us azure aks azure files volume or 持久卷声明 https learn microsoft com en us azure aks
  • AWS API Gateway 限制未按预期工作

    我正在尝试启用 API 网关限制 但它没有按预期工作 我将默认方法限制速率设置为每秒 1 个请求 并将突发设置为 1 个请求 然后 我在代码中创建了一个循环 向我的 API 端点同时发出 10 个请求 for let i 0 i lt 10
  • 如何使用 FlexJSON 序列化 Map>

    我有一个想要序列化为 JSON 的对象 该对象是一个包含特定对象列表的地图 这看起来与它相似 Map
  • 修复区域设置扩展中的类型变量

    鉴于此代码 locale A fixes foo a locale B A fixes bar a a locale C A fixes baz a begin sublocale B foo foo baz end I get Type
  • 如何使用 JRE 8 设置 eclipse?

    我尝试在 eclipse 中更新我的 jre 版本 我将 jre 8 添加到我安装的 JRE 中并检查了他 当我单击 确定 时 出现错误 The type java lang CharSequence cannot be resolved
  • urllib2.HTTPError:使用新的 Bing API 查询时出现 HTTP 错误 401(在 azure 市场中)

    所以 我已经根据堆栈溢出中同一屋檐下的大部分答案进行了更正 但我仍然无法解决这个问题 queryBingFor Google Fibre quoted query urllib quote queryBingFor account key
  • 从 scipy.optimize.curve_fit 获取与参数估计相关的标准误差

    我在用scipy optimize curve fit将曲线拟合到我拥有的一些数据 大多数情况下 曲线似乎非常吻合 由于某种原因 当我打印它时 pcov inf 我真正需要的是计算与我拟合的参数相关的误差 并且不确定如何准确地做到这一点 即
  • Spring RESTful Web 服务 - 大容量数据处理

    我正在尝试构建一个 Spring Spring Boot RESTful Web 服务 它接受每行 100 万行 40 列的 CSV 文件作为输入 来自基于 Angular 的前端 并且将是同步调用 在进入其他屏幕之前 必须通知用户上传状态