【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

评论

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

玩转gRPC—深入概念与原理

海风极客

gRPC 网络协议 后端开发

一文掌握数仓中auto analyze的使用

华为云开发者联盟

数据库 sql 后端 analyze

在线SQL转Excel(xls/xlsx)工具

入门小站

工具

湘江鲲鹏加入昇腾万里伙伴计划,与华为续写合作新篇章

Geek_2d6073

广电五舟与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

HUAWEI nova 10系列发布 华为应用市场筑牢应用安全防火墙

最新动态

python小知识-python泛函数

AIWeker

Python python小知识 7月月更

在线文本行固定长度填充工具

入门小站

工具

“只跑一趟”,小区装维任务主动推荐探索

鲸品堂

运维

解密函数计算异步任务能力之「任务的状态及生命周期管理」

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设

SelectDB

数据库 数据中台 Apaache Doris

托管式服务网络:云原生时代的应用体系架构进化

阿里巴巴云原生

阿里云 云原生 服务网格

DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

HarmonyOS开发者

HarmonyOS

上线首月,这家露营地游客好评率高达99.9%!他是怎么做到的?

天天预约

小程序 SaaS 线上预约 预约工具 露营

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

CANN算子:利用迭代器高效实现Tensor数据切割分块处理

华为云开发者联盟

人工智能 算子 迭代器

使用 MyBatis 操作 Nebula Graph 的实践

NebulaGraph

mybatis 图数据库 Nebula Graph

华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙

科技汇

可视化任务编排&拖拉拽 | Scaleph 基于 Apache SeaTunnel的数据集成

Apache SeaTunnel

数据同步 数据集成 可视化开发 数据集成平台 拖拉拽

联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点

科技大数据

扩展你的KUBECTL功能

mengzyou

Kubernetes DevOps kubectl krew

能源势动:电力行业的碳中和该如何实现?

脑极体

智洋创新与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

科技之家

实战模拟│JWT 登录认证

经验分享 JWT 开发语言 7月月更 跨域认证

多模输入事件分发机制详解

OpenHarmony开发者

Open Harmony

赋能数字经济 福昕软件出席金砖国家可持续发展高层论坛

联营汇聚

整理混乱的头文件,我用include what you use

华为云开发者联盟

c++ 开发 C语言 技能

基于Netty,徒手撸IM(一):IM系统设计篇

JackJiang

网络编程 Netty 即时通讯 im开发

使用 BlocConsumer 同时构建响应式组件和监听状态

岛上码农

flutter ios 安卓 移动端开发 7月月更

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