大数据查询并导出文件的功能实现

最近产品要求实现一个大数据量生产文件并提供下载的功能,重点是避免OOM并且尽可能的快。

1 设计思路

a 考虑OOM上,考虑系统并发情况,很简单的做法就是处理请求时,将业务逻辑放到线程池中执行。

b 其次一个web系统,对于客户端的请求要考虑响应时间,不能时间过长。

结合以上两点考虑可采用异步处理方案,将请求放入线程池中异步执行,然后响应本次请求,并提供查询异步任务完成情况的接口,最后再提供接口来提供用户希望得到的东西。

这样便有三个接口:请求下载文件、查询文件信息、下载文件

以上是总体设计思路,考虑到具体的业务场景再对其进行优化。

考虑到用户体验情况,在请求后对于数据查询并最终生成文件的工程进行同步等待,等待一定时间后若是任务尚未完成,则相应请求,前端提示生成文件任务未完成;若等待后任务已完成,则相应信息中带有关键的请求信息,前端将此请求用于调用下载文件接口直接下载文件。

以上是总体设计思路,一般来说生成的文件需要记录相关信息,并展示给前台,可以考虑建立库表,或者直接通过本地磁盘对文件夹以及文件的名字来保存信息,这里推荐使用库表,扩展性更强。

待续。

猜你喜欢

转载自www.cnblogs.com/SaltFishYe/p/11483882.html