爲什麼要用異步?
在我們平時的業務系統中,文件導入,文件導出是一個很常見的業務需求。正常情況下,同步導出就可以滿足我們85%的需求。但是對於數據量大,業務拼接複雜的系統來說,導出超時,導入超時是不可避免的,而且是無法忍受的。異步能讓業務線程在後臺運行,沒有等待時間,處理完成通知出來就行了。
- 異步導出的使用的特點: 處理耗時長、業務優先級低、容易超時、數據量大
- 優點: 它能解決導出超時問題,能大大的提高接口請求處理速度,提高吞吐量,提升系統性能 任何事情都有兩面性,也許不具有絕對性,但是在這裏是成立的。既然它有那麼多優點,當然也會有缺點。
#### ### ## 設計原則
- 支持大數據量場景下的excel導出。採用異步導出方式
- 降低excel導出時的內存消耗。基於easyExcel再次封裝,支持excel定製化
- 統一excel導出規範。後端導出接口統一化、前端導出交互組件化,簡化開發流程
- 封裝公共導出方法,管理導出的整個生命週期。接入方只用關心業務邏輯,且代碼複用性高
- 使用自定義線程池異步處理,避免導出佔用大量的服務器資源,影響業務接口正常響應
- 引入文件系統。避免因導出文件過大、導出邏輯耗時過長帶來的請求超時等的問題
設計思路
-
公共服務提供統一的excel導出接口,前端通過統一的接口來導出。統一導出接口會根據導出的url參數轉發請求到各業務方的接口實現上,並帶上導出參數
-
公共組件包中提供通用異步導出方法。該方法封裝查庫、數據寫入excel、excel文件上傳、同步導出狀態等邏輯
-
公共服務提供統一的獲取導出excel文件下載地址的方法,支持異步輪詢下載導出文件
-
擴展點: 可在通用導出服務中添加導出審計日誌,記錄重要敏感數據的導出情況。並且可以添加導出權限控制、異常告警等擴展功能。