写点什么

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

评论

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

OpenHarmony——内核对象队列之算法详解(下)

OpenHarmony开发者

OpenHarmony

【React源码系列】全网最详细的React异常捕获及处理机制

爱切图的木子老师

前端 React react源码 异常捕获

作为开发人员,您应该熟悉的 7 个 JavaScript 概念

flow

8月月更

叮~点击定制你的数字车手证,参与挑战吉尼斯世界纪录™ 称号

亚马逊云科技 (Amazon Web Services)

Amaozn DeepRacer

Linux进阶切换用户

flow

8月月更

分贝通SAAS企业大数据体系建设经验分享

阿里云大数据AI技术

大数据

体验远超Hue,这才是技术人员最喜欢的SQL工具

雨果

sql hue DaaS数据即服务

Wallys/QCA 9880/802.11ac Mini PCIe Wi-Fi Module, Dual Band, 2,4GHz / 5GHz advanced edition

wallys-wifi6

Linux进阶显示用户UID和GID

flow

8月月更

不是吧,连公司里的卷王写代码都复制粘贴,这合理?

Liam

前端 代码 手写代码 代码阅读 写好代码

MySQL数据指令

武师叔

8月月更

winpe工具WEPE微PE工具箱

肖飞码字

windows 操作系统

Go-Excelize API源码阅读(五)—— Close()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

传统数据中台又贵又复杂?何不试一试永久免费的下一代数据中台

雨果

数据中台 DaaS数据即服务

Linux进阶新增用户组

flow

8月月更

阿里云张新涛:支持沉浸式体验应用快速落地,阿里云云XR平台发布

阿里云弹性计算

视觉计算 云XR平台 沉浸式体验 GPU实例

论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题

隐语SecretFlow

密码学和算法 机器学习/深度学习

开源一夏 | 基于若依架构的列表详情展示

六月的雨在InfoQ

bootstrap 开源 若依 8月月更

基于设计稿识别的可视化低代码系统实践

Shopee技术团队

前端 设计 低代码

Linux进阶删除用户

flow

8月月更

对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!

图灵教育

高中数学

说了半天跨平台,今儿咱就来跨跨!(完结篇)——Kubernetes上手实践

为自己带盐

Docker WSL2 k8s入门 签约计划第三季 8月月更

华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款

华为云开发者联盟

云计算 后端 华为云 流浪方舟

艺术与科技的狂欢,云端XR支撑阿那亚2022砂之盒沉浸艺术季

阿里云弹性计算

vr 视觉计算 云XR平台 沉浸式体验 GPU实例

视频是主动学习吗?

FunTester

【Python】:如何利用Python实现文件操作

翼同学

Python 编程语言 文件操作 8月日更 入门学习

进行知识管理的好处有哪些?

Geek_da0866

毕昇编译器优化:Lazy Code Motion

华为云开发者联盟

云计算 后端 表达式 毕昇编译器

怎样选择一个好的SaaS知识库工具?

Geek_da0866

Linux进阶删除用户组

flow

8月月更

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