Uber CacheFront:每秒 40 M 的读取,延迟显著降低
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
Uber开发了一种名为CacheFront的创新缓存解决方案,用于提升其内部分布式数据库Docstore的性能。这个解决方案使Uber能够实现每秒超过40M的在线存储读取,显著降低了延迟,具体来说,P75延迟减少了75%,P99.9延迟减少了67%。
Uber工程师面临的主要挑战是为高可扩展性应用程序提供低读取延迟服务。传统的基于磁盘的数据库在面对极高读取需求时会遇到成本和扩展性问题。Uber的一些团队尝试采用Redis作为缓存解决方案,但这要求每个团队独立配置和维护缓存,并实现复杂的失效逻辑。CacheFront旨在集中处理这些问题,允许团队更专注于核心业务。
CacheFront通过集成到Docstore的查询引擎中,采用cache aside策略进行缓存读取。它先尝试从Redis获取数据,如果缓存未命中,则从存储引擎检索数据并异步填充到Redis。此外,Uber使用变更数据捕获(CDC)引擎来处理缓存失效,确保在数据库更新后几秒内缓存就能与数据库保持一致。
为了保障缓存与数据库的一致性,Uber工程师开发了一种特殊的模式来对缓存进行校验。并且,为了应对缓存丢失可能引起的数据库负载增加问题,Uber采用跨区域复制只含键的数据行来维持热缓存状态。
在设置缓存操作的超时时间时,Uber遇到了挑战。为此,他们实现了一种自适应超时机制,基于性能数据动态调整Redis操作的超时时间,以平衡请求成功率和延迟。
CacheFront的设计不仅提高了性能,还通过自动化和集中化管理降低了维护成本,使得Uber工程师能够更好地专注于核心服务的开发。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)