- 发布于
Uber 如何通过集成 Redis 缓存提供 4000 万次读取服务?
- 作者

- 姓名
- AbnAsia.org
- @steven_n_t

"实现的主要部分有3个:
1 - 使用 CDC 进行 CacheFront 读写
Uber 构建了 CacheFront - 一个与 Redis、Docstore 和 MySQL 集成的缓存解决方案。
Docstore 的查询引擎不是与微服务进行通信,而是与 Redis 进行读取请求通信。
对于缓存命中,查询引擎从 Redis 获取数据。对于缓存未命中,请求将转到存储引擎和数据库。
在写入的情况下,Docstore的CDC服务(Flux)会使Redis中的记录失效。它跟踪 MySQL binlog 事件以触发失效。
2 - 使用 Redis 流进行多区域缓存预热
区域故障转移可能会导致缓存未命中并导致数据库过载。
为了解决这个问题,Uber 的工程团队使用了跨区域的 Redis 复制。这是通过跟踪 Redis 写入流以将密钥复制到远程区域来完成的。
在远程区域中,流使用者向查询引擎发出读取请求,查询引擎读取数据库并更新缓存。
3 - Redis 和 Docstore 分片
Uber 的所有团队都使用 Docstore,有些团队会产生大量请求。
Redis 和 Docstore 实例都经过分片或分区来处理负载。但单个 Redis 集群宕机可能会创建一个热数据库分片。
为了防止这种情况,他们使用与数据库分片不同的方案对 Redis 集群进行分区。这确保了负载均匀分布。 "
作者
Ai Base Network (ABN), ABN ASIA由具有深厚学术背景的人员创立,他们在美国、荷兰、匈牙利、日本、韩国、新加坡和越南等国家有工作经验。ABN Asia是学术界和技术相遇的地方。凭借我们领先的解决方案和优秀的软件开发服务,我们帮助企业提升水平,走向全球舞台。我们的承诺:更快。更好。更可靠。在大多数情况下:也更便宜。
无论您需要IT服务、数字咨询、现成软件解决方案,还是想向我们发送招标要求(RFPs),都请随时与我们联系。您可以通过[email protected]与我们联系。我们随时准备为您提供所有技术需求的帮助。

© ABN ASIA