缓存数据一致性问题解决方案
1. 数据实时同步更新
技术特点:强一致性,更新数据库同时更新缓存
优点:数据一致性强,不会出现缓存雪崩问题
缺点:代码耦合、运行期耦合、影响正常业务、增加网络开销
适用场景:适合写操作频繁的细粒度缓存数据,数据一致实时性要求较高的场景,如银行、证券
2. 数据准实时更新
技术特点:准一致性,更新数据库后,异步更新缓存。基于多线程或MQ实现。
优点:数据同步有较短延迟、与业务解耦、不影响正常业务,不会出现缓存雪崩问题。
缺点:无法保证最终一致性,需要补偿机制
适用场景:不适合写操作频繁且数据一致实时性要求严格的场景
3. 缓存失效机制
技术特点:弱一致性
优点:简单,不影响正常业务
缺点:有一定延迟,存在缓存雪崩问题
适用场景:适合读多写少的互联网场景,能接受一定数据演示。如电商、理财、社交类业务
4. 任务调度更新
技术特点:最终一致性,采用任务调度框架,按一定频率更新
优点:不影响正常业务
缺点:不保证一致性,代码复杂度增大,容易堆积垃圾数据
适用场景:适合复杂统计类数据缓存更新,对数据一致实时性要求低的场景。
总结
第二种最优雅,兼顾时效性与耦合度;第三种最简单,靠缓存淘汰机制。
缓存雪崩
当缓存服务器重启或者大量缓存集中在某一个时间失效,在失效的这一瞬间,高并发请求给后端系统(比如DB)带来很大压力。