V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pppouj
V2EX  ›  程序员

大文件上传怎么提速

  •  
  •   pppouj · 2023-05-19 13:49:52 +08:00 · 1849 次点击
    这是一个创建于 556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 zip 文件的上传需要进行内容的验证和解析。 1 、目前的方案是先上传到文件服务器后,在将文件从硬盘加载在内存中进行逻辑提取部分重要信息处理后删除。 2 、有什么好的加速方式吗?目前想到只有分片上传 3 、语言不限

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

    2.确定要上传的文件,小文件用 7z 压缩,大文件用 zstd 压缩。

    3.分片传输,多线程传输,允许断点续传。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:38 · PVG 16:38 · LAX 00:38 · JFK 03:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.