当前位置:首页 > Web开发 > 正文

有简单上传、表单上传、断点续传等等

2024-03-31 Web开发

用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至处事器,做一层中转便可以实现,但当这份文件非常大到了10GB级别,我们就需要思考另一种形式的技术方案了,也就是本文要论述的方案。

技术要求主要有以下几方面:

用户向应用处事器取到上传policy和回调设置。

应用处事器返回上传policy和回调。

用户直接向OSS发送文件上传请求。
     等文件数据上传完,OSS给用户Response前,OSS会按照用户的回调设置,请求用户的处事器。如果应用处事器返回告成,那么就返回用户告成,如果应用处事器返回掉败,那么OSS也返回给用户掉败。这样确保了用户上传告成,应用处事器已经收到通知了。

应用处事器给OSS返回。

OSS将应用处事器返回的内容返回给用户。

启动后台同步引擎执行oss到odps的数据同步。

同步实时进度返回返回给应用处事器,同时展示给用户。

技术方案

4.1 上传

OSS供给了丰富的SDK,有简单上传、表单上传、断点续传等等,对付超大文件供给的上传成果建议给与断点续传方法,长处是可以对大文件并行分片上传,操作OSS的并行措置惩罚惩罚能力,中间暂停也可以从当前位置继续上传,网络环境影响可以降到最低。

4.2 下载

OSS文件下载同样也有多种方法,普通下载、流式下载、断点续传下载、范畴下载等等,若直接下载到本地同样建议断点续传下载,但我们的需求并不只仅是下载文件本地存储,而是读取文件做数据从OSS到ODPS的同步,因此不做中间存储,直接边读变写,,一方面给与OSS流式读取,一方面ODPS tunnel上传,用多线程读写方法提高同步速率。

4.3 两阶段数据转移

文件从本地到ODPS可以分为两个阶段,第一阶段前端分片断点续传将本地文件上传至OSS,第二阶段后端流式读写将数据从OSS同步至ODPS,如下图所示:

技术图片

涉及技术点:

4.3.1 前端,js sdk带STS token 安适上传

在需要上传的文件较大时,可以通过multipartUpload接口进行分片上传。分片上传的好处是将一个大请求分成多个小请求来执行,这样当此中一些请求掉败后,不需要从头上传整个文件,而只需要上传掉败的分片就可以了。一般对付大于100MB的文件,建议给与分片上传的要领,每次进行分片上传都建议从头new一个新的OSS实例。

阿里云分片上传流程主要会挪用3个api,包罗

客户端向处事器端倡议获得授权的请求。处事器端先验证客户真个合法性。如果是合法客户端,那么处事器端会使用本身的AccessKey来向STS倡议一个请求授权的请求,具体可以参考访谒控制。

处事器端获取姑且凭证之后返回给客户端。

客户端使用获取的姑且凭证来倡议向OSS的上传请求,更详细的请求结构可以参考姑且授权访谒。客户端可以缓存该凭证用来上传,直到凭证掉效再向处事器端请求新的凭证。

4.3.2 后端,多线程流式读写

OSS端:如果要下载的文件太大,或者一次性下载耗时太长,可以多线程流式下载,一次措置惩罚惩罚部分内容,直到完成文件的下载。
ODPS端:tunnel sdk对OSS流式数据直接写入,一次完整的数据写入流程凡是包孕以下法式:
先对数据进行划分;

撑持超大数据量、10G级别以上没有任何压力,主要是前端在分片上传设置好分片限额即可(最大10000片,每片最大100G),目前设置每片1M满足10G需求。

不变性:实测不雅察看网络异常情况较少,文件内容正常情况下100%告成。

准确性:实测数据无丢掉,读写准确性100%。

效率:办公网带宽1.5M/s的情况下1G文件分钟级、10G文件小时级,实际速度视用户端确当前网络带宽变革。

体验:实时进度感知、网络异常断点续传、定制字符特殊措置惩罚惩罚等高级成果可以提升用户体验。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32600.html