首页/开发/系统分析与架构设计速查/单调读(Monotonic Reads)

单调读(Monotonic Reads)

同一会话的读取不会“时光倒流”:如果已看到某个版本的数据,后续读取不会返回更旧的版本;通过绑定副本或比较版本号实现。

问题场景多副本轮询读:先读到新数据,再读到旧副本的旧数据
实现会话固定副本、按版本过滤、读取时携带最小可见版本
关联保证常与读己之写一起作为会话保证
  • 会话粘性:同一会话固定访问同一副本组
  • 版本过滤:读取携带已见最小版本,旧版本响应丢弃重试
  • 分页场景:保持同一读取通道,跨页不切换副本
  • 监控:统计版本回退重试比例,偏高时检查副本健康
分页查询跨越多个副本时,单调读缺失会导致重复或遗漏条目。

易错点

  • 负载均衡每次选随机副本,会话内数据版本来回跳变
  • 分页请求分布到不同副本,结果集不稳定

数据来源与参考

  • Terry 等《Session Guarantees for Weakly Consistent Replicated Data》(1994)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌