HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

DoorDash 重构多层缓存系统,提高性能并解决碎片化问题

  • 2023-11-10
    北京
  • 本文字数:884 字

    阅读完需:约 3 分钟

大小:420.76K时长:02:23
DoorDash重构多层缓存系统,提高性能并解决碎片化问题

DoorDash 重构了他们在所有微服务中使用的异构缓存系统,创建了一个通用的多层缓存,提供了一种通用的机制,解决了因采用碎片化缓存所带来的诸多问题。

 

缓存是一种常用的机制,不需要进行成本高昂的优化就可以提升系统的性能。DoorDash 工程师 Lev Neiman 和 Jason Fan 解释说,这在 DoorDash 的场景中尤为重要,因为对他们来说,实现业务逻辑比优化性能更重要。

 

遗憾的是,DoorDash 的不同团队使用了不同的缓存系统,包括CaffeineRedis Lettuce和 HashMap。这也意味着他们会一次又一次地经历和解决同样的问题,比如缓存过期、严重依赖 Redis、键模式不一致等。出于这个原因,DoorDash 的一个工程师团队开始为他们所有的微服务创建一个共享缓存库,从 DashPass 开始,这是一个由于流量增加而面临扩展挑战和频繁故障的关键服务。

 

第一步是基于两个 Kotlin 接口定义一个公共 API:CacheManager,为特定的键类型和回退方法创建新的缓存;CacheKey类,对键类型进行抽象。


这让我们可以使用依赖注入和多态性在后台注入任意逻辑,同时保持业务逻辑缓存调用的统一性。

 

在尽力保持缓存简单的同时,DoorDash 工程师选择了一种包含三层的多层设计,进一步提高性能优化的可能性。第一层称为请求本地缓存,数据驻留在哈希映射中,其生存期受请求约束。第二层为本地缓存,使用 Caffeine 在同一 Java 虚拟机的所有工作线程之间共享数据。第三层是 Redis 缓存,同一 Redis 集群中的所有 pod 都可以使用 Redis Lettuce 访问。

 

这个多层缓存系统的一个重要特性是运行时控制,每个层都有,可以打开或关闭缓存,设置缓存生存时间(TTL)或是影子模式(在这种模式下,会将一定比例的缓存请求与真实来源进行比较)。此外,缓存系统还支持指标收集,包括命中和未命中、缓存延迟和日志记录。

 

在缓存系统准备就绪并在 DashPass 中达到预期效果后,他们就把它逐步推广到组织的其他部门,并就何时使用、如何使用或者是何时不使用提供明确的指导。

 

根据 Neiman 和 Fan 的说法,新的缓存系统提高了他们所有服务的可扩展性和安全性,同时也方便了团队在必要时采用缓存来提高性能。

 

原文链接:

https://www.infoq.com/news/2023/10/doordash-multilayered-cache/

2023-11-10 08:0037640

评论

发布
暂无评论
发现更多内容

用百度和神策做埋点为何pv差异很大?

ClkLog

数据分析 开源软件 用户画像 埋点分析系统

大模型提示工程之Prompt框架和示例

EquatorCoco

LLM Prompt

软件测试学习笔记丨基于Gitlab的持续集成机制

测试人

软件测试

如何提高知识库系统管理水平?

秃头小帅oi

吴晓波频道:基于数据飞轮更懂会员需求 提升业务价值

Geek_2d6073

站群服务器优化技巧:提升网站速度与搜索引擎排名

一只扑棱蛾子

站群服务器

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

华为云开源

开源 云原生 华为云

IPQ6018, IPQ6010, IPQ6000-Exploring the high-performance WiFi chip series

wifi6-yiyi

wifi6 IPQ6010

从银行资产规模看TiDB上线杭州银行核心到底意味着什么?

TiDB 社区干货传送门

数据库前沿趋势

我和 TiDB 的故事:十年理财之路之 TiDB 如何让我收益达到30万的

TiDB 社区干货传送门

新版本/特性解读

TiDB 7.5.1 资源管控测试

TiDB 社区干货传送门

性能测评 7.x 实践

MySQL索引优化:选择合适的索引类型

gogo

一文读懂,新质生产力!

天津汇柏科技有限公司

新质生产力

TiDB 三中心"脑裂"场景探讨

TiDB 社区干货传送门

【4月20日 成都见】MySQL vs TiDB,看看如何利用分布式架构实现更简单,更可靠的应用实践!

TiDB 社区干货传送门

社区活动

三思超100㎡ P0.9 8K LED大屏登陆广东佛山丨一屏控全局

电子信息发烧客

深入浅出:易懂的 Windows 平台 cURL 命令使用教程

Liam

Java 程序员 后端 API curl

云服务器几核几G配置应该怎么选择?

Finovy Cloud

服务器 云服务器

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 社区干货传送门

如何专业、正确地使用LED租赁屏

Dylan

技术 音乐 视觉 LED LED显示屏

tiup与prometheus迁移

TiDB 社区干货传送门

迁移 管理与运维

与鲸同行,智领未来!和鲸科技“人工智能+X”学科建设合作交流会(北京站)圆满结束!

ModelWhale

人工智能 大数据 数据科学 实验室 新型基础设施建设

值得思考的两个测试面试题

老张

软件测试 面试经验

cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

小米汽车 27 分钟大定破突破 5 万台;中国在全球率先商用 5.5G 丨 RTE 开发者日报 Vol.174

声网

通过TiOperator恢复共享存储备份数据

TiDB 社区干货传送门

迁移 集群管理 管理与运维 安装 & 部署 备份 & 恢复

阿里云实时计算Flink的产品化思考与实践【下】

Apache Flink

当法式美学遇上鸿蒙生态,Hi畅享70 Pro 5G演绎科技浪漫?

Geek_2d6073

亮数据,可视化数据采集强大利器

陈橘又青

数据采集

消息队列的七种经典应用场景

不在线第一只蜗牛

消息队列

Arbitrum 为什么能领跑以太坊 Layer 2?

Footprint Analytics

blockchain Layer 2

DoorDash重构多层缓存系统,提高性能并解决碎片化问题_微服务_Sergio De Simone_InfoQ精选文章