先回答三个问题

  1. 新写对象是否读后可见?
  2. 覆盖写是否存在短暂旧读?
  3. 跨地域复制的延迟窗口是多少?

业务协议建议

  • 写入时带版本号(ETag/VersionId)。
  • 读取时声明期望版本,不满足则重试或降级。
  • 删除采用 tombstone 而非立即硬删。

典型流程

PUT(v2) -> 返回version=v2 -> GET(if-match=v2) -> 成功

多地域策略

  • 强一致需求走单主写入。
  • 多主写入必须引入冲突解决策略(LWW 或 CRDT)。
  • 对外暴露“可见性延迟”SLO,避免误判故障。

小结

对象存储的一致性不是文档注释,而是业务协议的一部分。把版本语义显式化,读写行为才可预测。