首页/开发/系统分析与架构设计速查/读己之写(Read Your Writes)

读己之写(Read Your Writes)

会话级一致性保证:用户提交写入后,自己的后续读取能看到该结果;常见实现是写后一段时间内路由到主库或用会话令牌绑定数据版本。

问题场景写主库、读从库,复制延迟导致刚提交的数据查不到
实现手段会话粘性、写后读主、客户端记录版本号
影响用户可见的行为不一致,投诉集中在提交后立即查看

写后读主示意(伪代码)

写后读主示意(伪代码)
写成功后:session[userId].until = now + 5s
读取时:
  if (now < until) → 路由主库
  else → 路由从库,并校验版本不早于已写版本
产品层面也可缓解:提交成功后展示本地已知数据,不以立即回查结果为准。

易错点

  • 读写分离后未做任何会话保证,用户频繁看到旧数据
  • 统一写后读主导致主库压力上升,未评估容量

数据来源与参考

  • Terry 等《Session Guarantees for Weakly Consistent Replicated Data》(1994)
  • 《数据密集型应用系统设计》(Kleppmann)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌