假设有一个能够导入包含资产的大型文件的REST服务。
这些资产可以相互复制,资产也可以创建另一个实体,以便有验证来检查重复项,并且导入之间存在一些依赖关系,因此必须跨所有当前导入和已经存在的导入进行检查。
在保存资产之前,有一些处理逻辑,导入这些文件大约需要3-4分钟。所有资产都会在处理完成后立即保存。
有人能从在这样的系统中获得最佳性能的角度来建议处理并发问题的最佳方法是什么吗?
发布于 2021-01-02 22:07:07
反应式编程是目前在web应用程序中获得高性能的一种很好的方法。
看看这篇关于反应式编程以及它如何解决性能问题的文章:
https://blog.redelastic.com/what-is-reactive-programming-bc9fa7f4a7fc
由于您使用的是Java和Spring,Spring Webflux可能是您开始响应式编程的方式。请看一下本教程:
https://www.baeldung.com/spring-webflux
本教程的重点是使用REST实现客户端和服务器之间的通信。但是反应式编程还解决了在服务器端对接收到的数据的处理,例如通过以反应式方式与数据库交互。
发布于 2021-01-07 06:58:33
Spring Batch具有parallel processing的能力。
该框架用于ETL处理
该作业可以在收到资产后由控制器异步启动,也可以延迟启动- natively或使用Quartz等其他调度器。
发布于 2021-01-08 10:04:33
我推荐通过Apache Livy使用Apache Spark,它为Apache Spark提供了REST API接口。Apache Spark在处理批处理数据、识别重复数据方面的能力非常强大,它使用RDD/DataFrame实现更快的处理速度。
https://dassum.medium.com/apache-livy-a-rest-interface-for-apache-spark-f435540e26a9
https://stackoverflow.com/questions/65509062
复制相似问题