AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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:0049102

评论

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

算云融合促发展,天翼云以领先云网算力助推数字中国建设!

天翼云开发者社区

安全可信| 天翼云算力调度平台通过信通院首批可信算力云服务评估!

天翼云开发者社区

5月上海线下 · CSM认证周末班【提前报名特惠】“全球金牌课程”CST导师亲授

ShineScrum

软件测试/测试开发丨如何高效使用 Requests 做接口自动化测试

测试人

软件测试 自动化测试 接口测试 测试开发 requests

如何通过Java代码将添加页码到PDF文档?

在下毛毛雨

Java PDF 添加页码

5月在线 · A-CSM认证周末班【提前报名特惠】“敏捷教练必修课程”CST导师亲授

ShineScrum

智改数转:这个制造业的必答题该如何作答?

加入高科技仿生人

低代码 数字化 制造业 智能化 智改数转

分布式政企应用如何快速实现云原生的微服务架构改造

华为云开源

微服务 云原生

数据库原理及MySQL应用 | 程序流程控制

TiAmo

数据库 sql

打破软件开发“不可能三角” 只需一个低代码方案

力软低代码开发平台

FastAPI 快速开发 Web API 项目: 定义路径参数和查询参数

宇宙之一粟

Python FastApi

龙蜥开发者说:历时三周,记录如何从 0 到 1 构建龙蜥衍生版 | 第 18 期

OpenAnolis小助手

开源 操作系统 龙蜥社区 浪潮信息 衍生版

容器化,让数据库如虎添翼

沃趣科技

MySQL 数据库 云原生 容器化

基于SpringBoot实现单元测试的多种情境/方法(二)

天翼云开发者社区

保证高效写入查询的情况下,如何实现 CPU 资源和磁盘 IO 的最低开销?

TDengine

大数据 tdengine 数据处理 时序数据库 资源消耗

重磅消息 | 2023年腾讯云从业者课程全面升级

科技热闻

软件测试/测试开发丨Chrome 浏览器+Postman还能这样做接口测试 ?

测试人

软件测试 Postman 自动化测试 接口测试 测试开发

【特别策划】2022年银行年报金融科技系列专题(一)

易观分析

金融科技 金融 银行

大咖说丨云计算:数字世界的“中枢神经”

天翼云开发者社区

再获权威认可!MIAOYUN入选中国信通院2022年度《云原生产品目录》

MIAOYUN

云计算 容器 云原生 容器云 容器云平台

5月上海线下 · CSPO认证周末班【提前报名特惠】“价值交付课程”CST导师亲授

ShineScrum

从“卖船”到提供建造“航母” 的基础设施,用友BIP有底气

用友BIP

国营单位工作4年转行网络安全,成功上岸安全开发!

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

前沿成果 | 澳鹏Appen团队两篇研究论文被国际顶会收录

澳鹏Appen

人工智能 机器学习 计算机视觉 nlp 数据标注

哪里有免费大文件传输平台?通过这4个网站免费来进行大文件传输

镭速

Springfox与SpringDoc——swagger如何选择(SpringDoc入门)

天翼云开发者社区

明道云技术路径选择及与LCDP的比较

明道云

网上说低代码的一大堆,JNPF凭什么可以火?

引迈信息

前端 敏捷开发 低代码 快速开发 JNPF

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