这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
上传存储
上传存储是图片系统的入口。第一版可能把图片写到业务服务器本地磁盘,但很快会遇到扩容、备份、下载带宽和多机房一致性问题。
本章主线
本章讲三件事:
- 上传流程:客户端、业务服务和存储系统如何协作。
- 存储方案:本地磁盘、共享存储、对象存储的取舍。
- 命名设计:对象 key、目录、hash 和多租户隔离如何设计。
客户端直传
生产系统通常让客户端直传对象存储:
客户端 -> 业务服务申请签名
客户端 -> 对象存储上传
对象存储/客户端 -> 通知业务服务完成这样业务服务不再承载大图片上传流量,只负责鉴权、签名和元数据。
对象命名
图片 key 不应直接使用原始文件名。推荐包含租户、日期和文件 ID:
images/{tenant}/{yyyy}/{mm}/{dd}/{image_id}.jpg原始文件名只保存在元数据中。对象 key 要稳定、不可猜测,并支持后续冷热分层和批量清理。
元数据表
图片元数据至少包含:
- image_id
- owner_id
- object_key
- width / height
- format
- size
- hash
- audit_status
- created_at
上传完成不代表可访问。图片通常要经过审核、压缩或派生图生成后,才进入可用状态。