核心指标与演进路线

别只盯着接口 200

设计文件系统时,最容易犯的错是「接口能传上去就行」。但接口 200 回答不了这些问题:用户传大文件成功了吗?打开图片快不快?CDN 真的减轻了源站压力吗?存储成本在失控吗?风险文件拦住了吗?

所以要有核心指标,而且要区分「能衡量」和「真正该衡量」的。

五个关键指标

指标含义关心的取舍
上传成功率尤其大文件、移动网络、跨地域分片上传让状态更复杂,但显著提高成功率
首字节时间打开图片、合同、视频封面的延迟是否需要 CDN / 就近存储
源站回源率CDN 是否真的降低业务压力缓存策略、预热、回源保护
存储成本热、冷、临时文件的开销生命周期策略是否有效
安全命中 / 误拦截率拦住了真风险,还是误伤正常用户校验与扫描的平衡

这些指标会直接决定架构取舍。例如:

  • 上传成功率低 → 引入分片上传 + 断点续传。
  • 首字节时间长 → 迁移对象存储 + 接入 CDN。
  • 回源率居高不下 → 优化缓存键与预热策略。
  • 成本飞涨 → 补生命周期与冷热分层。

演进路线

这门课从最小可用出发,一步步演进。每一步都围绕一个真实瓶颈:

  1. 基础上传:确认最小链路能跑通(传输 + 元数据)。
  2. 分片上传:解决大文件弱网络下的失败成本。
  3. 断点续传:把上传状态变成可查询、可恢复的数据。
  4. 对象存储:把文件从业务服务拆出去,划清控制面与数据面。
  5. CDN 加速:把下载流量移出业务服务,降低延迟。
  6. 安全审计:让文件系统可管理、可追责、可上线。
  7. 完整系统:串成可演进、可运维、可治理的平台。

演进的原则

每一次演进不是「推翻重来」,而是在现有边界上加一层能力:

  • 文件 ID 与物理路径解耦(后面换存储不用改接口)。
  • 元数据保留状态字段(支持异步扫描、审核)。
  • 下载不暴露本地路径(为签名 URL 留接口)。
  • 上传大小、并发、配额从一开始就限。

学完你能得到什么

读完这门课,你应该能:

  • 画出一套文件上传系统的核心架构图。
  • 解释每个模块为什么出现、解决了什么问题、引入了什么新复杂度。
  • 面对一个真实上传需求,判断当前瓶颈并给出演进方案。

下一章,从最简单的「基础上传」开始。

发现内容有问题?

告诉我们哪里需要改进。