如何高效的上传大文件?

article/2025/9/30 2:06:03

业务场景:在很多业务中会涉及到文件上传,对于上传的文件大小要求也相对比较广,对于小文件而言我们使用MultipartFile上传就能解决,对于大文件来说可能也就将文件拆分成多份,一份一份的上传,大部分业务是足以满足的,但如果你对文件上传的效率比较高那么你可以改造一下

改造方式:使用websocket长连接上传(或者新增这个方式,毕竟多个方式多个选择)

对于http传输来说是开启了一个比较短的tcp传输块文件,对于websocket双向通道来说是开启了一个超长的tcp连接来传输多个文件,对于http这种重量级请求来说算是比较高效的。

传输协议定义:至于如何传递,也可以自己定义一套协议,比如:

前4个字节为int32的类型,在4个字节是参数的长度,然后是参数的字节(至于参数是JSON或protobuf封装都可以),在4个字节是文件长度,文件字节流,如下图:

好处:那么我们这么做哪些地方会得到优化呢?

1. websocket双向通信属于轻量级,http重量级请求每片文件都是一个消耗。

2. 文件检查次数减少,http分片每篇都得检查,而websocket就不需要了,只需要每个文件检查一次即可,一个连接传递多个文件

3. 不需要将文件分开写,直接追加到一个文件,减少了合并的步骤(单机忽略这个好处,在分布式环境中需要解决没片文件上传到同一个服务器上,或者使用共享目录,但是会导致多服务写同一个文件出现错误或分片顺序混乱,所以需要分开写,比如0.txt,1.txt,2.txt...然后需要将这些片合并到一起才是完整的文件,但是websocket传递文件时从头到尾都只与同一个服务建立连接,所以可以直接追加到文件上一步到位,而且不需要担心顺序混乱的问题。)

如有更好的方式或改动建议,还请不吝指教,谢谢。


http://chatgpt.dhexx.cn/article/9erAftH5.shtml

相关文章

请问:怎么实现大文件快速上传?

关注公众号 前端开发博客,领27本电子书 回复加群,自助秒进前端群 前言 大文件快速上传的方案,相信你也有过了解,其实无非就是将 文件变小,也就是通过 压缩文件资源 或者 文件资源分块 后再上传。 本文只介绍资源分块上…

超大文件上传解决方案

一、 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传; 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。 支持文件…

上传大文件(10G)的解决方案

需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制。 PC端全平台支持,要求支持Windows,Mac,Linu…

linux操作系统实用教程课后答案,Linux操作系统案例教程课后习题答案

Linux操作系统案例教程课后习题答案 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 Linux操作系统案例教程课后习题答案第一章一 1.(D) 2.(B,C) 3.(A,B,D)4.(A,C,D ) …

第一章 Linux操作系统概述

接下来我将根据《Linux C编程完全解密》这本书,整理Linux系列相关笔记,并写成文章。本文将是该系列文章的第一篇。 第1章 Linux操作系统概述 1.1 认识Linux操作系统 1.1.1 Linux操作系统发展背景 Linux操作系统核心最早是由芬兰的Linus Torvalds于199…

SRE运维工程师笔记-安装linux系统(国产统信UOS操作系统)

SRE运维工程师笔记-安装linux系统(国产统信UOS操作系统) 1. 安装统信UOS系统1.1 针对统信UOS操作系统创建虚拟机环境1.2 安装国产统信UOS操作系统 1. 安装统信UOS系统 1.1 针对统信UOS操作系统创建虚拟机环境 简单介绍一下国产统信系统的安装&#xff…

Linux操作系统——定制自己的 Linux 系统

文章目录 22 定制自己的 Linux 系统22.1 基本介绍22.2 基本原理22.3 制作 min linux 思路分析22.4 操作步骤 22 定制自己的 Linux 系统 22.1 基本介绍 通过裁剪现有 Linux 系统(CentOS7.6),创建属于自己的 min Linux 小系统,可以加深我们对 linux 的理…

linux系统下的基本操作

Linux 操作系统 1. Linux操作系统认知 1.1 操作系统(Operation System简称OS) 定义 操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控…

Linux 系统相关介绍

Linux 系统相关说明 Linux 内核版本 没有图形化页面 稳定版 : 面向普通用户 开发版 : 面向开发人员 Linux 发行版 在内核版本的基础上, 增加比如桌面/音乐播放器等应用软件的系统 (不同公司的发行版, 名称不同)

讲讲Linux系统工程师的职业规划

时至今日,Linux操作系统越来越成为主流的桌面操作系统,自从在一年前看到了编程大神王垠写的一篇文章——完全用Linux工作,我决定学习使用Linux操作系统。因Windows在服务器领域的份额越来越低,学习具有安全和高效等特点的Linux操作…

Linux系统编程之进程退出,父进程等待子进程退出

1.首先讲一下进程的退出 进程的退出分为正常退出和异常退出: 正常退出: (1)main函数调用return (2)进程调用exit(),标准C库 (3)进程调用_exit()或_Exit(),属于系统调用 (4)进程最后一…

linux开发工程师主要是干什么的?

转载自:http://emb.hqyj.com/linux/10328.html 作者:清华远见 在新手眼里,大多数都不知道linux开发工程师主要是干什么的。其实linux开发工程师的主要工作内容有很多,需要学习的知识点也挺多的。学习这些东西以后,就可…

Linux 下怎么查看服务器的cpu和内存的硬件信息

一、top命令 top # 实时显示进程状态用户 和 查看CPU利用率 二、查看总内存的方法: free命令主要用于显示内存数量,如下图中内容所表示 free -h 命令 free -m 命令

如何通过命令查看服务器的内存条使用情况

其实就一个命令就搞定了:dmidecode。 最常用的选项就是用 -t 或者 --type 来限定关键字: bios, system, baseboard, chassis, processor, memory, cache, connector, slot 关于这些关键字可以百度是什么意思, 或者去看man手册页,这…

Linux 查看服务器内存、CPU、网络等占用情况的命令--汇总

搭建测试环境过程中,需要对正在使用的aws服务器,查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1、查看物理CPU个数:cat cat /proc/cpuinfo | grep "physical id" | sort | uniq | w…

服务器显示内存不足怎么查看,怎么查看服务器总内存

怎么查看服务器总内存 内容精选 换一换 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 当您购买的云服务器规格无法满足业务需要时,可…

Linux查看服务器内存、磁盘、cpu、网络占用、端口占用情况

1、查看物理CPU个数:cat cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l2、查看服务器CPU内核个数:cat 每个物理CPU中core的个数(即核数) cat /proc/cpuinfo | grep "cpu cores" | uniq 3…

如何查服务器运行内存条,怎么查看服务器的cpu和内存的硬件信息

可以按照如下方式进行操作: 一、查看cpu总个数方法: 1、首先执行top命令,如下图中内容所表示。 2、在top命令的显示界面,按数字键1,即可查看到当前系统中的总cpu数,如下图中内容所表示。 二、查看总内存的方…

如何查看linux 服务器的内存容量

如何查看linux 服务器的内存容量 cat /proc/meminfo cat /proc/meminfo