| 问题场景 | 写主库、读从库,复制延迟导致刚提交的数据查不到 |
|---|---|
| 实现手段 | 会话粘性、写后读主、客户端记录版本号 |
| 影响 | 用户可见的行为不一致,投诉集中在提交后立即查看 |
写后读主示意(伪代码)
写后读主示意(伪代码)
写成功后:session[userId].until = now + 5s
读取时:
if (now < until) → 路由主库
else → 路由从库,并校验版本不早于已写版本产品层面也可缓解:提交成功后展示本地已知数据,不以立即回查结果为准。
会话级一致性保证:用户提交写入后,自己的后续读取能看到该结果;常见实现是写后一段时间内路由到主库或用会话令牌绑定数据版本。
| 问题场景 | 写主库、读从库,复制延迟导致刚提交的数据查不到 |
|---|---|
| 实现手段 | 会话粘性、写后读主、客户端记录版本号 |
| 影响 | 用户可见的行为不一致,投诉集中在提交后立即查看 |
写成功后:session[userId].until = now + 5s
读取时:
if (now < until) → 路由主库
else → 路由从库,并校验版本不早于已写版本