【成为架构师3-17】缓存:数据一致性优化二次淘汰法

系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

数据库不一致性问题

在没有引入缓存的时候,数据库的主从架构主要会有因为主从延迟而造成的主从不一致的问题。
【成为架构师3-17】缓存:数据一致性优化二次淘汰法
在主从同步延迟的时间窗内,发生写后立即读,就会读到从库的旧数据。

主从不一致的影响时间是短暂的,主从同步完成影响就会消失。

数据库与缓存不一致性问题

数据不一致的本质原因是数据冗余,只要引入数据冗余就一定会引发数据不一致问题
【成为架构师3-17】缓存:数据一致性优化二次淘汰法
按照上图的时序,缓存里面会存入一个旧数据,而且这一不一致会造成较长时间的影响,我们就需要设计方案来处理这一问题。常用的方法有二次淘汰法和设置超时时间。

不一致性优化

二次淘汰法

二次淘汰法主要分为异步淘汰和服务淘汰:

异步淘汰由第三方线下更具来完成:【成为架构师3-17】缓存:数据一致性优化二次淘汰法
使用binlog的订阅分析工具,图中为DTS,当从库的binlog更新的时候,发起请求去del对应的缓存,这一过程了体现了二次、异步

这一异步的二次淘汰也可以放到服务里面:服务在完成写之后可以异步启动一个timer,设置一个时间(略小于主从延时的时间窗),时间到后对缓存进行del操作,这一异步过程由服务方来完成。

设置超时时间

除了异步二次淘汰,当缓存写入的时候,还可以为其设置一个过期时间,超过时间则缓存自动失效,这样可以避免造成长时间的脏数据影响。


上一篇回顾:【成为架构师3-16】缓存:互联网缓存的最佳实践Cache Aside Pattern
下一篇更精彩:持续更新中…

【成为架构师3-17】缓存:数据一致性优化二次淘汰法