java 批量导入数据功能,每条数据需要调用检验,一次 3 秒,如何优化性能?
现在有个批量导入的功能,其中的每条数据都需要调用其他系统检验数据的有效性,调用一次大概 3s,导致性能很差,您看有什么好的办法嘛
回答:
多开几个线程一起调用,来减少总耗费时间
但这种情况最好是其他系统可以支持批量处理
,就是一次性传多条过去校验有效性
回答:
1:如果是其他系统的性能问题导致,最好就是异步解耦去操作了,上传完文件到服务器或则腾讯云阿里云上面,用调度是扫这些文件再慢慢检验,就要有个报表中心的菜单
2:并发处理,批处理你的文件,easyExcel有异步收到多少条数据就可以处理了,不必同步等待io全部上传完成。
回答:
最典型的多线程场景。
future或者countDownlatch
回答:
首先,明确一下几个场景。
第一个场景,系统中有消息中间件,如Rabbitmq,那么建议异步校验,异步获取结果,导入接口和第三方系统彻底解耦,以减少第三方系统导致的对导入接口的影响,如TPS不足慢、卡或者Connection异常或者业务异常等。所以:
1,推荐先将导入的数据批量发送到消息中间件
2,通过定时批量手动拉取的方式,对消息进行消费
3,如何消费的问题:假设每次来取500条,那么可以考虑一下第三方业务系统是否有批量校验的接口,调用批量校验的接口。如果没有,推荐消费的时候,使用FurtureTask类等异步等待返回的方式去获取到第三方的校验信息,增加并发量,缩短绝对的等待时间。
4,当同一个导入的所有消息消费完,标记为成功。
5,当有些消费失败,则进入到死信,该次导入失败。然后通过死信队列的消费专门处理。
以上是 java 批量导入数据功能,每条数据需要调用检验,一次 3 秒,如何优化性能? 的全部内容, 来源链接: utcz.com/p/944629.html