【软件开发 | 项目架构】实现缓存一致性

前言

缓存有助于降低延迟、扩展读密集型负载并节省成本,几乎无处不在。缓存不仅运行在你的手机和浏览器中,诸如 CDN(内容分发网络)和 DNS(域名系统)本质上也是地理分布式的缓存系统。正是因为背后有众多缓存协同工作,你才能顺畅地阅读这篇博客文章。

著名计算机科学家 Phil Karlton 曾说:“计算机科学中只有两件难事:缓存失效(cache invalidation)和命名问题。”如果你曾参与过带有失效机制的缓存系统开发,很可能遭遇过令人头疼的缓存不一致问题。

Meta 运营着世界上最大规模的缓存系统之一,包括 TAO 和 Memcache。多年来,我们通过一项指标将 TAO 缓存的一致性水平从 99.9999%(六个九)提升至 99.99999999%(十个九)。

针对缓存失效问题,我们相信现在已经找到了一种有效的解决方案,能够在理论与实践之间架起桥梁。本文介绍的原理和方法,广泛适用于各种规模的缓存服务,无论你是在 Redis 中缓存 Postgres 数据,还是维护分离式的物化视图。

希望此文能够帮助工程师减少缓存失效带来的困扰,使所有带失效机制的缓存系统实现更高的一致性。

缓存失效与缓存一致性的定义

按照定义,缓存并非数据的“权威来源”(source of truth),例如数据库才是。缓存失效指的是在权威数据源发生变化时,主动使缓存中对应的陈旧数据失效的过程。如果缓存失效操作处理不当,缓存中可能会无限期保留与权威数据不一致的错误数据。

缓存失效涉及的操作必须由缓存之外的实体执行。某个外部系统(如客户端或发布/订阅系统)需要通知缓存数据已被修

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值