INFO replication WAIT 1 100 CONFIG GET replica-read-only
下单成功后跳详情页显示订单不存在,刷一下又有了,写主库和读从库之间只隔 8 毫秒。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:写落在主库,读被路由到从库,复制本身是异步的,这几毫秒里从库还没收到命令,读到的自然是旧值或者空值。
这次卡住的地方就在「Redis 读写分离延迟」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
处理上按这个顺序:刚写过的键在一段时间内强制路由到主库去读;写完之后的关键读用会话标记强制路由到主库;对一致性要求高的那少数键干脆不做读写分离。
确认没问题再收工,下单后连刷详情页五十次都读到刚写的数据,中间没有空值。
