对于 zip 文件的上传需要进行内容的验证和解析。 1 、目前的方案是先上传到文件服务器后,在将文件从硬盘加载在内存中进行逻辑提取部分重要信息处理后删除。 2 、有什么好的加速方式吗?目前想到只有分片上传 3 、语言不限
1
opengps 2023-05-19 14:07:01 +08:00 via Android
提取的内容是啥?有些基础信息只需要读取前面多少个字节就可以
如果必须全量上传,分片的目的未必是提速,可能只是为了削弱压力峰值 |
2
jones2000 2023-05-19 14:17:20 +08:00
本地先初略分析一遍, 去掉无用的数据, 再切片,切片的时候根据实际场景,分有关联的切片(必须 1 ,2 ,3 切片顺序分析),独立切片( 1 ,2 ,3 切换可以独立分析,没有顺序)等等。每个切片单独 zip ,多线程同步上传。这样上传 1 个切片就可以分析一个,提高速度。
|
5
opengps 2023-05-19 14:51:35 +08:00
@pppouj 如果你上行带宽用满了,那么物理瓶颈已经摆在这里了,除了提高上行确实多大优化空间。改不改分片上传确实没多大提速意义。倒是后台校验线程可以考虑多线程处理,但这里显然不是最耗费时间的环节了,优化效果不会太明显
|
6
pppouj OP 的确是这个情况,目前是通过前端上传到 oss 后再在服务器从 oss 下载下来序列化到磁盘中,解压压缩包处理里面的逻辑,我想这一步不是也可以省略掉,感觉多此一举,直接上传到服务器中再通过多线程去处理 zip 包内的内容
|
7
opengg 2023-05-19 15:18:41 +08:00 via Android
把逻辑前置到前端或者边缘节点比如 cf worker
|
8
aec4d 2023-05-19 23:29:21 +08:00
@pppouj 如果你把 oss 当作临时中转站,需要注意这种服务是否有删除惩罚条款,比如上传文件最少保存 90 天,不足 90 天按照 90 天扣费
|
9
documentzhangx66 2023-05-20 00:47:24 +08:00
1.不考虑安全隐私问题的话,文件先在本地计算 md5 ,如果服务器有这个 md5 ,就不用上传了。
2.确定要上传的文件,小文件用 7z 压缩,大文件用 zstd 压缩。 3.分片传输,多线程传输,允许断点续传。 |