延迟双删:时间差实验室

Cache Consistency · v1 → v2

按真实发生顺序排列

快照决定 B 拿到哪个版本;完成读取的时刻决定它何时回填。

脏缓存
终态数据库 v2
终态缓存 v1

    延迟从哪里来

    第二次删除至少要覆盖“旧快照读取完成并回填”的尾部时间。估算时应看慢查询、从库复制和网络抖动的高分位,并用监控持续校准。

    没有一个固定毫秒数能证明正确。流量、数据量和故障状态一变,原来的安全余量就可能消失。

    别在请求线程里 sleep

    让接口线程原地等待,会占住连接和线程池,把一次缓存权衡放大成吞吐问题。把第二次删除写成可重试的延迟任务,更容易观测失败和积压。

    提交数据库 投递延迟队列 消费并重试 DEL