先回答三个问题
- 新写对象是否读后可见?
- 覆盖写是否存在短暂旧读?
- 跨地域复制的延迟窗口是多少?
业务协议建议
- 写入时带版本号(ETag/VersionId)。
- 读取时声明期望版本,不满足则重试或降级。
- 删除采用 tombstone 而非立即硬删。
典型流程
PUT(v2) -> 返回version=v2 -> GET(if-match=v2) -> 成功
多地域策略
- 强一致需求走单主写入。
- 多主写入必须引入冲突解决策略(LWW 或 CRDT)。
- 对外暴露“可见性延迟”SLO,避免误判故障。
小结
对象存储的一致性不是文档注释,而是业务协议的一部分。把版本语义显式化,读写行为才可预测。