异步任务服务

为什么要用异步?

在我们平时的业务系统中,文件导入,文件导出是一个很常见的业务需求。正常情况下,同步导出就可以满足我们85%的需求。但是对于数据量大,业务拼接复杂的系统来说,导出超时,导入超时是不可避免的,而且是无法忍受的。异步能让业务线程在后台运行,没有等待时间,处理完成通知出来就行了。

  • 异步导出的使用的特点: 处理耗时长、业务优先级低、容易超时、数据量大
  • 优点: 它能解决导出超时问题,能大大的提高接口请求处理速度,提高吞吐量,提升系统性能 任何事情都有两面性,也许不具有绝对性,但是在这里是成立的。既然它有那么多优点,当然也会有缺点。

#### ### ## 设计原则

  • 支持大数据量场景下的excel导出。采用异步导出方式
  • 降低excel导出时的内存消耗。基于easyExcel再次封装,支持excel定制化
  • 统一excel导出规范。后端导出接口统一化、前端导出交互组件化,简化开发流程
  • 封装公共导出方法,管理导出的整个生命周期。接入方只用关心业务逻辑,且代码复用性高
  • 使用自定义线程池异步处理,避免导出占用大量的服务器资源,影响业务接口正常响应
  • 引入文件系统。避免因导出文件过大、导出逻辑耗时过长带来的请求超时等的问题

设计思路

  • 公共服务提供统一的excel导出接口,前端通过统一的接口来导出。统一导出接口会根据导出的url参数转发请求到各业务方的接口实现上,并带上导出参数

  • 公共组件包中提供通用异步导出方法。该方法封装查库、数据写入excel、excel文件上传、同步导出状态等逻辑

  • 公共服务提供统一的获取导出excel文件下载地址的方法,支持异步轮询下载导出文件

  • 扩展点: 可在通用导出服务中添加导出审计日志,记录重要敏感数据的导出情况。并且可以添加导出权限控制、异常告警等扩展功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章