⚙️ AI 基础设施 · 缓存系统

AI 预测缓存过期:DoorDash 每秒扛住 150 万请求,可用性 99.99999%

DoorDash 公开了内部缓存平台 Entity Cache 的技术细节:基于 Envoy 与 Valkey 构建,在服务网格层拦截请求,并用 XFetch 概率算法预测缓存过期、提前刷新——最终支撑起每秒 150 万次请求,可用性 99.99999%。

综合公开信息 全文约 4 分钟读完
#DoorDash #XFetch #预测性缓存 #Envoy #Valkey
1.5M 每秒处理请求数(RPS)
99.99999% 代理缓存可用性
90%+ 缓存命中率

⚡ 30 秒速览

  • 规模:覆盖 50 个服务的 100+ 端点,峰值每秒 150 万请求。
  • AI 角色:XFetch 算法预测高频条目的过期时间并提前刷新,把「同时过期」打散成「分批刷新」。
  • 韧性验证:一次持续数小时的上游故障中,缓存继续返回略有过期但有效的数据,而非失败。
  • 性能账本:内存分配率降 50-60%,单 pod 吞吐提升约 5 倍,P99 延迟峰值最高降 80%。
  • 代价:全部收益只花掉约 2.1ms 的 P99 代理开销。

01它解决什么问题?重复请求正在吃掉微服务的算力

在微服务架构里,最贵的请求往往是那些重复的请求。50 个服务反复读取同一份不常变更的数据,每次都要穿透完整调用链,消耗计算资源,并在生态扩张时推高尾延迟。

缓存不是新话题,难的是在大规模下让缓存保持新鲜。

传统做法

每个应用各自实现缓存逻辑,重复请求仍会打到后端,团队维护成本高。

Entity Cache

透明代理拦截 HTTP 与 gRPC 请求,命中即返回,未命中才转发上游——服务零改造。

DoorDash 把它描述为「不是单一的优化,而是一组针对可靠性和性能的特性集合」。缓存被搬到基础设施层,由服务网格集中管理。

02一次请求的完整旅程

当一个请求到达 Entity Cache,代理首先向 Valkey 查询是否存在有效缓存。

请求进入查询 Valkey命中 → 直接返回
请求进入查询 Valkey未命中 → 转发上游按策略回写

两条路径,一条通向性能,一条通向正确性。缓存的新鲜度由 Kafka 事件驱动失效机制保障:对比更新时间戳与缓存响应,过期条目被刷新,无需分布式删除。

真正关键的是双重 TTL 阈值——它允许系统在故障期间返回略微过期的响应,而不是直接失败。

阅读提示:两条链路展示了缓存的两种命运——命中时零上游消耗,未命中时才走完整调用链;双重 TTL 是「可用性优先」的设计选择。

03数小时故障中,它做了什么?可用性不是面板上的数字

🛑 一次持续数小时的上游故障服务未中断

  • 上游服务长时间不可用,按传统设计,所有请求都会连锁失败。
  • Entity Cache 继续提供略有过期但有效的缓存数据,而不是失败。
  • Envoy 检测到不健康的缓存实例时自动摘除,并直接把请求路由到上游,形成兜底。
评判:99.99999% 的可用性,不是靠监控面板刷出来的,而是在真实故障中验证过的设计决策

这个案例揭示了 Entity Cache 的本质:它把「缓存」从性能优化工具,变成了韧性基础设施的一部分。

04性能账本:这些优化值多少钱?

50-60%内存分配率降低
5×单 pod 吞吐提升
80%P99 延迟峰值降幅
2.1msP99 代理开销

阅读提示:四项数据来自 DoorDash 官方博客。前两项是资源效率,后两项是延迟账——2.1ms 是缓存带来的全部代价。

还有一组数据藏在正文里:正常运行期间,上游请求减少 60% 到 95%,新接入端点的延迟改善最高达 90%。

05AI 在其中的角色:用预测代替等待

传统 TTL 是一刀切:到期即失效。高峰时段大量条目同时过期,就会形成缓存雪崩

XFetch 算法改变了这个逻辑——被频繁访问的条目会在到期前被提前刷新,把「同时过期」打散成「分批刷新」,从概率上降低雪崩风险。

这不是等待失效,而是预测失效。

🧮

自定义缓冲池

减少内存分配开销,直接贡献 50-60% 的分配率下降。

🔒

无锁 single-flight

缓存未命中时合并重复请求,防止重复计算打爆上游。

🔮

XFetch 提前刷新

概率性预测高频条目的过期时间,主动刷新而非被动等待。

阅读提示:三项优化分别解决内存、并发、过期三个问题。XFetch 是其中唯一带「预测」能力的组件,也是 Entity Cache 的 AI 内核。

一个诚实的注脚:严格说,XFetch 不是大模型,而是一个轻量概率算法——但它把「预测」带进了基础设施层,这是 AI 在系统工程中最务实的落点。
编辑核心判断

AI 的价值不只在生成内容,更在于把预测能力嵌进看不见的基础设施。DoorDash 用 XFetch 证明:一个轻量算法,就能让缓存系统在真实故障中保持可用。真正聪明的系统,是那些你感知不到它存在的系统。

DoorDash 对 Entity Cache 的定位

「Entity Cache 不是单一的优化,而是一组针对可靠性和性能的特性集合,以实现在 DoorDash 规模下的协同工作。」