免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

评论

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

MIAOYUN“一云多芯”解决方案获评2023西部信创优秀解决方案

MIAOYUN

解决方案 信创 信创生态 MIAOYUN 一云多芯

Vue- mixin(混入)

我搬去水星了

6 月 优质更文活动

Vue-组件自定义事件(绑定和解绑)

我搬去水星了

6 月 优质更文活动

浏览器存储(webStorage)

我搬去水星了

6 月 优质更文活动

Vue- ref属性

我搬去水星了

6 月 优质更文活动

分布式数据库 Join 查询设计与实现浅析 | 京东云技术团队

京东科技开发者

MySQL 数据库 elasticsearch join 企业号 6 月 PK 榜

Vue路由使用的几个注意点

张三丰无极

6 月 优质更文活动

Vue路由的基本应用

张三丰无极

6 月 优质更文活动

Vuex的基本使用

张三丰无极

6 月 优质更文活动

Vue-scoped(局部)样式

我搬去水星了

6 月 优质更文活动

Vue-props配置

我搬去水星了

6 月 优质更文活动

Vue-搭建Vuex开发环境

张三丰无极

6 月 优质更文活动

vue动画效果的使用

张三丰无极

6 月 优质更文活动

Vue-消息订阅与发布(pub/sub)

我搬去水星了

6 月 优质更文活动

从开源到云原生,时序数据库 TDengine 六年回顾精彩纷呈

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

Vue-路由(route)的简介

张三丰无极

6 月 优质更文活动

充分结合AI后的数智平台能做什么?

用友BIP

数智平台

Vue单文件组件

我搬去水星了

6 月 优质更文活动

Vue-嵌套(多级)路由

张三丰无极

6 月 优质更文活动

微服务高并发概念与核心类:资源指标数据统计相关类

互联网架构师小马

Java 微服务 sentinel

vuex-getters配置项

张三丰无极

6 月 优质更文活动

揭秘:云南白药如何激活组织活力!

用友BIP

人力资源 数智人力

Vue-全局事件总线(GlobalEventBus)

我搬去水星了

6 月 优质更文活动

禅道软件14年原创研发荣膺SAFe平台合作伙伴,国际权威机构认可专业实力

禅道项目管理

敏捷开发 safe 禅道 禅道项目管理

创建Vue脚手架(Vue CLI)并分析项目结构

我搬去水星了

6 月 优质更文活动

Vue-路由传递query参数两种方式

张三丰无极

6 月 优质更文活动

RALB负载均衡算法的应用 | 京东云技术团队

京东科技开发者

负载均衡 算法 cpu 限流 搜索推荐

Meetup 报名|06.17 StarRocks & Friends 与你相约上海

StarRocks

数据库 大数据 OLAP Meetup 线下活动

vuex中的四个map方法的使用

张三丰无极

6 月 优质更文活动

Vue-插槽(slot)的使用

张三丰无极

6 月 优质更文活动

Vue-插件(plugin)

我搬去水星了

6 月 优质更文活动

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