当前位置: 首页 > news >正文

π聪明-文件上传

分片上传+断点续传

  • 前端先把大文件切成小的分片,比如 5MB 一块,然后并发地上传到后端。后端每收到一个分片,就存到 MinIO 中,同时会用 Redis 的 bitmap 去记录哪些分片已经上传成功。这样的好处就是,即使上传过程中断了,前端可以根据 Redis 状态判断哪些分片已经上传,不用从头开始(这个就是断点续传),用户体验会比较好。
  • 首次上传分片时,我们会把这个文件的元信息,比如文件名、文件大小、上传者、所属组织标签等,保存到 MySQL 中,用来跟踪整个文件的上传状态。这也是为了方便后续的状态管理和权限控制。
  • 当所有分片上传完成后,前端会调用后端的合并接口。这里我们用的是 MinIO 提供的 composeObject 功能,直接在存储端完成分片的合并,完全不占用服务器的内存和 CPU 资源。合并完成后,系统会把文件状态在 MySQL 里更新为‘已完成’,并且清理掉对应的分片文件和 Redis 记录。
  • 文件合并后我们还会发送一条 Kafka 消息,通知后台的异步服务去做后续的文件解析、文本切片、向量化等工作,保证上传接口本身是快速响应的,不会因为后端的耗时任务拖慢用户体验。
  • 前端在上传文件前,会通过 MD5 算法计算出该文件内容的唯一哈希值,也就是 fileMd5,然后前端在分片上传文件时,请求不仅会包含分片本身的数据,还会附带两个关键的元信息,一个是 fileMd5,一个是 chunkIndex(表示当前索引位置),用于记录当前分片在原始文件中的顺序。等前端把所有分片都传完了,后端再根据这个 fileMd5 把所有分片拿出来,按 chunkIndex 顺序拼接在一起,通过 MinIO 的 composeObject 方法直接在存储端完成合并

文件合并过程中如何保证原子性

  • 合并步骤是调用了 MinIO 的 composeObject 接口。这个操作是在 MinIO 服务端内部完成的,它本身是一个原子操作。这意味着,对于 MinIO 来说,分片合并要么就彻底成功,生成一个完整的最终文件;要么就失败,不产生任何文件。
  • 合并操作失败:MinIO 没有生成新文件,代码会抛出异常并终止。此时,分片、数据库记录、Redis 缓存都还保留在合并之前的状态,用户只需要重新触发合并即可。
  • 整个上传流程是基于 JWT 做身份认证的,所有接口,比如分片上传、合并操作,前端都必须带上 token。这个 token 在后端被拦截器解析之后,会提取出当前用户的 userId。然后我们在用户第一次上传分片时,就把这个 userId 和文件的 MD5、文件名等信息一起写进数据库,保存到 file_upload 表里。这个过程其实就明确了:这个文件是属于谁的。
  • 接下来,比如合并文件这种敏感操作,系统会再做一次权限校验。我们会通过 fileMd5 + userId 去数据库查这个文件记录,确认这个操作确实是这个用户发起的,防止用户去合并别人的文件。

为什么选择Kafka异步处理

  • 第一,比如说我们在文件上传完成之后,会有很多后续的异步任务,比如提取元数据、生成全文索引、做 AI 向量化之类的处理,Kafka 本身就非常适合这种高吞吐的数据流
  • 另外一个很关键的点是 Kafka 的数据持久化能力。它的消息是保存在磁盘上的,而且可以保留很久,比如 7 天。消费者通过 offset 去控制消费进度。这个机制带来了一个特别大的好处:我们可以随时进行数据回溯。
http://www.rkmt.cn/news/82732.html

相关文章:

  • 2025年度五大整车环境模拟试验仓推荐供应商排行榜,看哪家品 - 工业推荐榜
  • 2025年12月固态硬盘品牌推荐排行榜:天硕TOPSSD领衔五大品牌全面评测 - 品牌推荐
  • 2025年12月纺织服装检测机构推荐:权威排行榜单深度对比及实用指南 - 十大品牌推荐
  • 2025年12月固态硬盘品牌推荐排行榜:国产化与高端市场深度对比分析 - 品牌推荐
  • 2025年12月纺织服装检测机构综合实力推荐榜:权威评测与选择指南 - 十大品牌推荐
  • 2025年12月成都全屋定制工厂推荐:成都高端定制品牌实力排行榜单深度评测分析 - 品牌推荐
  • 2025年12月铝单板厂家推荐:实力榜单与选择指南 - 品牌推荐
  • 空间辐射整改技术哪家好:十大服务商推荐 - 栗子测评
  • 2025温州短视频推广哪家好?这10家服务商为品牌赋能 - 栗子测评
  • 传导整改技术哪家好?这十家专业公司值得信赖 - 栗子测评
  • 2025年12月成都全屋定制工厂推荐榜:高端定制品牌实力排行榜单深度评测分析 - 品牌推荐
  • ESD静电管的工厂技术解析与行业厂商概览 - 栗子测评
  • if theres nothing to be pround but only self something
  • 2025深圳企业邮箱哪家好?这些服务商助力通信保障 - 栗子测评
  • 2025年年终小红书代理商推荐:从策略规划到执行落地的全链路能力横评,5家综合服务商实力盘点 - 品牌推荐
  • 2025年国内口碑不错的视光师培训学校排名,看哪家师资强? - mypinpai
  • 2025年五大圆柱滚子轴承厂推荐:圆柱滚子轴承靠谱生产商有哪 - 工业品牌热点
  • 2025年年终工业刷厂家推荐:结合真实用户口碑与产能规模,5家高性价比合作方盘点 - 品牌推荐
  • 2025年年终化妆培训学校推荐:多维度课程体系与教学模式横评,附不同学习目标的10所优质学校指南 - 品牌推荐
  • 2025知名眼镜培训学校TOP5权威推荐,甄选优质机构助力视 - mypinpai
  • 2025年五大调心球轴承知名品牌商推荐,批量定制与优质厂家全 - myqiye
  • GPU 发展简史:图形处理到通用计算的蜕变 - 指南
  • 2025年目前排行前列的高效粉碎机加工厂哪个好,JGF-B系列高效粉碎机/JGF-C系列高效粉碎机/高效粉碎机产品哪个好 - 品牌推荐师
  • 2025年年终副业平台推荐:从技能变现到内容创作全方位对比,涵盖不同预算需求的5款实用型平台盘点 - 品牌推荐
  • 2025年知名的白水苹果/陕西白水苹果产品表现力榜 - 品牌宣传支持者
  • 2025年年终副业平台推荐:结合市场趋势与用户体感,严选5款可持续收益模型解析 - 品牌推荐
  • Matlab非线性T-S模糊控制仿真
  • openGauss 企业级开源数据库架构深度解析 - 详解
  • 2025年诚信的青年鸡专业推荐榜 - 品牌宣传支持者
  • 2025年知名的布袋定制/刺绣布袋定制最新TOP厂家推荐 - 品牌宣传支持者