开发者生态
morning
DoorDash使用Envoy和Valkey构建了1.5M RPS的代理服务器,可用性达到99.99999%
2026-08-12
1 阅读
约4分钟阅读
作者: Leela Kumili
字号:
DoorDash开发了 Entity Cache,这是一个透明代理缓存平台 ",以减少微服务架构中对频繁访问但不常变更数据的重复请求。这类重复请求通常会增加后端负载、消耗额外的计算资源,并在微服务生态扩展时导致尾延迟上升。DoorDash表示,该平台支持50个服务的100多个端点,提供超过每秒1.5M的请求量并保持99.99999%的可用性。 Entity Cache是基于 Envoy "和 Valkey "构建的,在DoorDash基于Envoy的 服务网格 "内运行,拦截到达上游服务之前的HTTP和gRPC请求。该平台通过在客户端服务和上游应用之间放置透明代理,将缓存移动到基础设施层。服务无需修改应用代码即可继续发起现有请求,缓存行为则通过服务网格集中管理。 Entity Cache架构(来源: DoorDash博客 ") DoorDash将这种做法描述为不仅仅是传统的缓存层。 Entity Cache不是单一的优化,而是一组针对可靠性和性能的特性集合,以实现在DoorDash规模下的协同工作。 该平台将缓存、失效、故障处理、请求协调与性能优化结合在一起,以支持高流量的内部服务通信。当请求到达Entity Cache时,代理会向Valkey检查是否存在有效的缓存响应。命中缓存的响应会被直接返回,未命中的请求则转发到上游服务。返回的响应会根据配置策略存储起来并返回给请求服务。这种方式使团队能够采用集中式缓存,而无需在各个应用内实现独立的解决方案。 在大规模环境下,保持缓存的新鲜度与可靠性需要谨慎权衡。Entity Cache使用基于Kafka的事件驱动失效机制,通过对比更新时间戳与缓存响应来刷新过期条目,而无需分布式删除缓存。双重TTL阈值允许在故障期间返回略微过期的响应,而Envoy在检测到不健康的缓存实例时会将其移除并直接将请求路由到上游服务。 DoorDash还描述了该设计在生产故障期间所提供的帮助。 在一次持续数小时的上游故障中,该设计至关重要:Entity Cache继续提供略有过期但有效的缓存数据,而不是失败。 Entity Cache的韧性工作流(来源: DoorDash博客 ") 为了支持高请求量,DoorDash对Entity Cache的若干组件进行了优化。该平台使用自定义缓冲池以减少内存分配开销、无锁的single-flight机制以在缓存未命中时防止重复计算,并基于 XFetch算法 "实现概率性提前刷新以降低缓存雪崩的风险。XFetch使得被频繁访问的条目在到期前被刷新,从而降低大量请求同时遇到过期条目的可能性。 DoorDash表示,这些优化将分配率降低了50%到60%,每个pod的吞吐量提高约五倍,并将P99延迟峰值降低了最多80%。公司还报告了超过90%的缓存命中率、正常运行期间上游请求减少60%到95%、新接入端点的延迟改善最高达90%,以及大约2.1毫秒的P99代理开销。 查看英文原文: DoorDash Uses Envoy and Valkey for a 1.5M RPS Proxy Cache with 99.99999% Availability "
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱