WRITING / 2014.06.18

工程日志:统一对象存储前,先统一数据边界

从上传、元数据、引用关系和迁移策略出发,讨论多业务共享存储时为什么协议边界比底层介质更重要。

多个业务各自建设文件上传和存储后,常见问题并不是容量不足,而是同一份媒体在不同系统中拥有不同标识、生命周期和权限语义。所谓“统一存储”,不能只把文件迁到同一套对象存储。

先拆开三个对象

设计时应区分:

  1. 二进制对象:真实文件及其校验值;
  2. 媒体元数据:格式、尺寸、时长和处理状态;
  3. 业务引用:谁在什么场景下使用该对象。

文件可以去重,但业务引用不能被合并。删除一个业务记录,也不代表底层对象可以立即物理删除。

统一入口的职责

上传入口负责鉴权、分片合并、校验和生成稳定对象标识;业务系统只提交业务上下文,不感知物理存储路径。后续迁移介质时,稳定标识使上层接口无需改变。

客户端 → 上传协议 → 对象存储
                   ↓
              元数据与引用

生命周期与迁移

对象删除应由引用计数、保留期限和审计规则共同决定。迁移则采用双写、后台复制、读路径切换和旧副本回收的渐进步骤,每一步都需要校验工具和回滚开关。

统一存储真正统一的是身份、状态和生命周期。底层存储只是可以替换的实现。