大数据量处理以及结果导出技术方案
1 方案
(1)数据处理接口
采用异步处理数据,快速返回一个redis的key。异步处理结果以excel等文件形式存储于oss等文件存储系统中,并以接口返回的key作为redis的key,oss下载地址作为值将下载地址存储于redis中,设置一定的过期时间。
(2)结果导出接口
通过数据处理接口返回的key获取下载地址。页面直接访问该链接地址获取处理结果并自动导出。
2 示例
示例代码如下所示。
/**
* 数据处理接口
*/
@GetMapping("/testDealData")
@ResponseBody
public WebResponse<String> testDealData() {
try {
String resultKey = IdUtil.getSnowflakeNextIdStr();
CommonThreadPoolUtil.submitTask("数据处理", () -> manualDealDataService.testDealData(resultKey));
return WebResponse.success(resultKey);
} catch (Exception e) {
log.error("数据处理失败。", e);
return WebResponse.error("数据处理失败");
}
}
/**
* 结果导出接口
*/
@GetMapping("/downloadResult/{resultKey}")
public String downloadResult(@PathVariable("resultKey") String resultKey) {
return (String) RedisUtil.get(resultKey);
}