1. "写请求返回成功"前需要经过 cache 失效 → DB 写入 → binlog(MySQL)→ 主从同步 → 客户端确认,讨论 commit latency 的临界点。
"写请求返回成功"前需要经过哪些环节?讨论 commit latency 的临界点是什么?
- 写请求的完整路径
- 各环节的延迟贡献
- commit latency 的临界点
一个写请求成功返回前要经过:cache 失效(删除/更新缓存)→ DB 写入(事务提交)→ 写 binlog(MySQL redo+binlog)→ 主从同步(如果要求半同步)→ 客户端确认。commit latency 的临界点在于"何时对客户端返回成功"——若要求同步刷盘(WAL fsync)与主从同步完成才返回,延迟最高但最安全;若返回成功即允许异步刷盘/同步,则延迟低但可能在崩溃时丢数据。工程上:多数场景用"cache 失效 + 本地事务提交(可选 fsync)后即返回",主从同步走异步,牺牲一致性换低延迟;对强一致场景(如金融)则在主从同步(半同步)后返回。临界点是"客户端确认前必须完成哪些持久化/同步"。
这是"延迟 vs 持久化/一致性"的核心权衡。commit latency 的取舍本质是决定"哪些环节必须同步完成"——同步环节越多延迟越高,但数据越安全。