缓存数据一致性问题解决方案

1. 数据实时同步更新

技术特点:强一致性,更新数据库同时更新缓存

优点:数据一致性强,不会出现缓存雪崩问题

缺点:代码耦合、运行期耦合、影响正常业务、增加网络开销

适用场景:适合写操作频繁的细粒度缓存数据,数据一致实时性要求较高的场景,如银行、证券

2. 数据准实时更新

技术特点:准一致性,更新数据库后,异步更新缓存。基于多线程或MQ实现。

优点:数据同步有较短延迟、与业务解耦、不影响正常业务,不会出现缓存雪崩问题。

缺点:无法保证最终一致性,需要补偿机制

适用场景:不适合写操作频繁且数据一致实时性要求严格的场景

3. 缓存失效机制

技术特点:弱一致性

优点:简单,不影响正常业务

缺点:有一定延迟,存在缓存雪崩问题

适用场景:适合读多写少的互联网场景,能接受一定数据演示。如电商、理财、社交类业务

4. 任务调度更新

技术特点:最终一致性,采用任务调度框架,按一定频率更新

优点:不影响正常业务

缺点:不保证一致性,代码复杂度增大,容易堆积垃圾数据

适用场景:适合复杂统计类数据缓存更新,对数据一致实时性要求低的场景。

总结

第二种最优雅,兼顾时效性与耦合度;第三种最简单,靠缓存淘汰机制。

缓存雪崩

当缓存服务器重启或者大量缓存集中在某一个时间失效,在失效的这一瞬间,高并发请求给后端系统(比如DB)带来很大压力。

posted @ 2020-09-07 22:28  不写诗的诗人小安  阅读(548)  评论(0编辑  收藏  举报