数据导出流程设计

article/2025/8/29 23:20:03

1. 需求描述

        数据导出成excel、csv等格式文件是一个非常常见的需求,普通的导出可能是直接请求后端接口获取数据然后生成对应的文件并执行下载,这种导出方式会存在很多问题,因此根据公司系统的导出总结一下新的导出流程。

2. 技术方案

流程图

传统导出流程图 & 异步导出流程图

流程分析:

1. 相比传统的数据导出,异步导出流程不需要考虑接口的响应时间,查询数据的速度也相对可控, 当然传统的数据查询也可以通过多线程去查询,那么这会造成不必要的CPU资源浪费。

2. 由前端获取数据生成文件执行结果不可控,无法做到重试。当导出的数据文件较大时,用户的电脑不一定支持住导出操作(在之前公司碰到过这种情况)。

3. 当其他用户在相同条件的查询下做导出时,可以根据任务里面的参数json做判断是否重复导出,如果是重复导出则直接复用原先的URL,当然一般情况下这个不太可行,每个用户的数据权限不一致,脱敏操作也不一样。

异步导出流程进阶

 从上面的时序图可以看出,report-core(报表服务)的数据查询完全不受用户导出频率控制,bff服务也不会有太大的导出压力, DB层因为report-core读取的是slave库,master库是插入任务记录时用到,因此DB不会有压力。那么唯一压力来源于OSS业务线,当带宽不够时,文件上传会受影响,但这上传的时间造成的等待时间用户可能并不关心,因此服务性能不会有太大压力。

3. 技术实现

 入库 & 异步部分伪代码

//rpc 接口伪代码
public Long exportTask() {//第一步落库insertTaskInfo(taskDO);Long taskId = taskDO.getTaskId();//第二步异步执行executorService.sumbit(new ExportTask(taskHandler));//第三步rpc接口返回taskIdreturn taskId;
}//任务伪代码public class ExportTask extends implements Runnable {public ExportTaskHandler exportTaskHandler;@Overridepublic void run() {exportTaskHandler.handleExportTask();}}//handler 伪代码public interface ExportTaskHandler  {void handleExportTask();}//对应的具体任务执行方法
public class UserExportTask implements ExportTaskHandler  {@Overridepublic void handleExportTask() {//从DB读取数据        File file =  loadDataList();//上传至OSS服务uploadFile();//更新Task文件URLupdateTaskUrl(); }}

4. 总结

        之前也是听很多同事在导出这块很头痛,大多是在抱怨前端导出虽然方便,但不够完善,主要问题在于用户的电脑导出大文件时经常浏览器崩溃(电脑CPU缓存不够), 因此总结出一个比较完善的导出流程,作为以后导出流程的一个借鉴。


http://chatgpt.dhexx.cn/article/C8V4DSMP.shtml

相关文章

文件导出与下载(Excel,Zip)等几种方式

文件下载的几种办法: 1、导出数据为某种格式 ​ 这种的话常见的也就是导出为excel格式,个人通常有两种解决办法: a. 先创建文件,把数据写入文件中去,当然文件也是保存在电脑某个地方的,再读取该文件&…

java导出excel的两种方式

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞&#xff…

数据的导出方法

实现页面数据的导出 怎样实现网页数据的导出到本地,这里实现的是以Excel表格的格式导入到本地. 比如这样的个表格我怎样实现把数据导出放到一个到Excel表格中保存到本地, 从下面划红线部分可以看出这里的数据是通过三个下拉框的查询条件得到的数据&…

Pr 入门系列之十四:导出

视频工作流程中的最后一步就是导出。 Pr 中,可以方便地导出序列或剪辑,发送给他人,分享到社交媒体渠道,或者创建 DCP(数字电影包)文件用于影院分发。 ◆ ◆ ◆ 导出的一般流程 1、首先,在时间…

正态分布

正态分布 我们来对某一个年级做一项调查,看一看这个年级到底有多巨。于是,他们统计了每个同学一周刷题的时间。得到的结果如下: 可以看出,大多数人每周都有7-8个小时做题,有少部分蒟蒻(比如我)每周只有1-3个小时做题&…

广义pareto分布_帕累托分布广义帕累托分布

PDF、PMF、CDF 1. 概念解释 PDF:概率密度函数(probability density function), 在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。 PMF:概率质量函数(probability mass fun…

离散均匀分布

离散均匀分布 n 个值中的每一个具有相等的概率 1/ n 截图来源:Discrete Uniform Distribution 例子: 投掷一个骰子6个值中每个值出现的概率为 1 / 6 1/6 1/6 投掷两个骰子出现的两值之和,结果分布不再均匀,因为并非所有和的概率都…

平均分布

转载请注明出处:http://blog.csdn.net/liu_sn/article/details/79333368 今天遇到本很好玩的书,《世界是随机的:大数据时代的概率统计学》,在讲分布的时候作者说:概率分布就是概率论中的小九九。很有意思,看了之后确实…

边缘分布

什么是边缘分布函数,有那些性质 设 F ( x , y ) F(x,y) F(x,y)为随机变量 ( X , Y ) (X,Y) (X,Y)的分布函数,则 F ( x , y ) P { X ≤ x , Y ≤ y } F(x,y)P\{X \le x,Y \le y\} F(x,y)P{X≤x,Y≤y} 令 y → ∞ y \rightarrow \infty y→∞&#xff…

度分布的概念及形状

一、度分布的概念 把网络中节点的度按从小到大排序,从而统计得到度为k的节点占整个网络节点数的比例怕p k _k k​。例如下图: 从概率统计的角度看,p k _k k​也可以视为网络中一个随机选择的节点的度为k的概率,这就是度分布的概…

正确理解泊松分布

很多人在上概率论这门课的时候就没搞明白过泊松分布到底是怎么回事,至少我就是如此。虽然那个时候大家都会背“当试验的次数趋于无穷大,而乘积np固定时,二项分布收敛于泊松分布”,大部分的教科书上也都会给出这个收敛过程的数学推…

白话解释正态分布

复习一个统计学方面的课题,想找些资料看看,结果发现,就算是最基本的一些统计学概念,能找到的中文资料,读起来都是这么的佶屈聱牙,似乎都是从教科书里拷贝几个名词解释给放到一起,就算是一篇文章…

常用分布函数

0-1分布 设随机变量X只可能取0与1两个值,分布律为 则称X服从以p为参数的0-1分布 即 X 0 1 P 1-p p 用于描述: 对新生儿性别进行登记;检查产品质量是否合格;某车间的电力消耗是否超负荷 二项分布 设随机变量X只可能取0和1两个值&…

[R语言]正态分布

目录 分布 连续型变量的分布 正态分布 正态分布的推导 正态分布密度曲线 dnorm 正态分布的概率计算 正态分布累积曲线 总体分位数和尾概率 正态分布案例之一 R语言正态分布函数 正态分布相应的概率计算 正态分布的检验 shapiro.test()函数 Kolmogorov-Smirnov连续…

概率分布汇总

概率分布、总体分布、抽样分布,一开始很容易搞混,还以为是同一个理论,不同的概念,毕竟都是分布,又都是统计学里面的概率。今天就来理解理解这个东西吧。 概率分布是指随机变量的各取值与该取值对应的概率之间呈现的规…

拉普拉斯分布

如果随机变量的概率密度函数分布如下图所示,那么它就是拉普拉斯分布,记为x-Laplace(μ,λ),其中,μ 是位置参数,λ 是尺度参数。如果 μ 0,那么,正半部分恰好是尺度为 1/λ(或者λ&…

高斯分布

正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。 若随机变量X服从一个数学期望为μ、标准…

机器学习小组知识点23:F分布(F Distribution)-R语言代码

F分布的用途:用于方差分析、协方差分析和回归分析等。 定义 一个 F -分布的随机变量是两个卡方分布变量的比率: U1/d1U2/d2=U1/U2d1/d2 其中: U1和U2呈卡方分布,它们的自由度(degree of freedom)分别是d1和d2。 …

F分布及其应用

F分布是1924年英国统计学家R.A.Fisher提出,并以其姓氏的第一个字母命名的。它是一种非对称分布,有两个自由度,且位置不可互换。设X服从自由度为n1的卡方分布, Y服从自由度为n2的卡方分布,且X,Y独立,则称随机变量F=(X⁄n1 )/(Y⁄n2 )服从自由度为(n1,n2)的F分布,记为F~F…

TeamTalk各个服务的IP配置方案

本人微信公众号:CPP进阶之旅 如果觉得这篇文章对您有帮助,欢迎关注 “CPP进阶之旅” 学习更多技术干货 TeamTalk各个服务的IP配置方案 1.纯公司内网2.公网ip3.公网ip,路由器映射相关文章重要说明 TeamTalk源码中的IM_SERVER下共有8种服务器&a…