写点什么

Zendesk 从 DynamoDB 迁移到 MySQL 和 S3,节省了 80% 多的成本

作者:Rafal Gancarz

  • 2024-01-27
    北京
  • 本文字数:1151 字

    阅读完需:约 4 分钟

大小:576.96K时长:03:16
Zendesk从DynamoDB迁移到MySQL和S3,节省了80%多的成本

Zendesk 通过将 DynamoDB 迁移到使用 MySQL 和 S3 的分层存储解决方案,将数据存储成本降低了80%以上。该公司考虑了不同的存储技术,并决定将关系型数据库和对象存储结合起来,在降低成本的同时,取得可查询性和可伸缩性之间的平衡。

 

Zendesk 使用DynamoDB存储为事件流数据创建了持久性解决方案。最初的设计很有效,但运营成本越来越高。团队切换到了一个预置的计费模型,将成本降低了 50%,但是随着客户群的增长,以及需要使用Global Secondary Indexes(GSI)来支持新的查询模式,该架构运转所需的成本变得不可持续。



原来使用 DynamoDB 的架构(图片来源:Zendesk工程博客

 

由于 Zendesk 在 AWS 上运行其平台,该团队一直在寻找能够满足其功能和技术要求,同时又能降低成本的替代存储解决方案。他们考虑了S3Hudi(Zendesk 使用的数据湖)、ElasticSearchMySQL,但因为复杂性和 24 小时延迟而放弃了 Hudi,而 ElasticSearch 的成本与使用 DynamoDB 相似。最后,团队决定使用 MySQL 来缓冲来自Apache Kafka的日志及存储元数据,并使用 S3 来存储原始数据,每个文件 10000 条记录。

 

摄取流(ingestion flow)将 Kafka 消费的日志数据存储到 MySQL 的缓冲表中。每隔一小时,后台作业就会以每个文件 10000 条日志为单位,将缓冲表中的新记录批量上传到 S3 中,并为每个 S3 文件插入一条元数据记录。另有一个作业每隔一小时会从缓冲表中删除超过 4 小时的日志。



使用 MySQL(AuroraDB))和 S3 的新架构(图片来源:Zendesk工程博客

 

为了处理查询,新解决方案需要在 MySQL 元数据表中进行查找,然后对查找返回的文件并行执行一组S3-Select查询。由于数据布局针对时间顺序检索进行了优化,所以团队在执行更复杂的查询时遇到了问题。

 

Zendesk 集团技术主管Shane Hender解释了在新架构中进行灵活查询所面临的挑战:

在完成了上述所有工作后,当客户端希望通过时间戳以外的任何字段筛选结果时,我们遇到了性能问题。例如,如果客户端需要特定 user-id 的日志,那么在最坏的情况下,为了查找相关日志,我们必须扫描给定时间范围内的所有 S3 数据,这使得我们很难确定哪些查询可以并行执行。

 

工程师们曾考虑通过在 S3 中复制数据来处理筛选多个字段的情况,但考虑到字段组合的数量比较大,这种方法并不可行。最终,他们找到了Bloom Filters,并进一步将其与Count-Min Sketch数据结构相结合,提供了一种支持多字段筛选查询的有效方法。改进后的解决方案需要一个额外的表来存储序列化数据结构,用于确定所要查询的 S3 文件。

 

迁移完成后,Zendesk 将存储成本降低到不到 DynamoDB 配置成本的 20%,其中 MySQL (AuroraDB)占 90%以上,S3 和 S3-Select 占不到 10%。新的解决方案提供了大约 200 到 500 毫秒的查询延迟,不过峰值有时会达到几秒,团队正设法进一步优化。

 

原文链接:

https://www.infoq.com/news/2023/12/zendesk-dynamodb-mysql-s3-cost/

2024-01-27 08:008703

评论

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

音视频八股文(5)--SDL音视频渲染实战。会使用就行,不需要深究。

福大大架构师每日一题

音视频 SDL 流媒体 福大大

美国To B软件公司受到ChatGPT“威胁”解析

B Impact

Java 继承 Minio 实现文件上传、文件下载、文件删除等功能

Java架构历程

三周年连更

Qz学算法-数据结构篇(查找算法--插值、斐波那契查找)

浅辄

数据结构 三周年连更

成立3年,云服务厂商火山引擎全景扫描

B Impact

用Python也能画图?用Python来画个“python”

Bob

Python

2023 年 10 个最佳 Linux 桌面发行版,每个都是那么的漂亮!

wljslmz

三周年连更

OpenHarmony接收指定网络的状态变化通知

坚果

OpenHarmony 三周年连更

如何利用 Go 创建一个 Web 应用

宇宙之一粟

Go Web 服务端 客户端 三周年连更

关于时间管理的一点建议

光毅

时间管理 Tech Lead

灾备的级别和等级划分

穿过生命散发芬芳

灾备 三周年连更

2022-04-25:给定两个长度为N的数组,a[]和b[] 也就是对于每个位置i来说,有a[i]和b[i]两个属性 i a[i] b[i] j a[j] b[j] 现在想为了i,选一个最

福大大架构师每日一题

golang 算法 rust 福大大

零代码以“王者荣耀”为例解析设计七原则,助你面试拿“五杀”

陈言必行

设计原则 三周年连更

Kafkaide让IDEA开发者不在游走

扬_帆_起_航

kafka kafka manager

陆奇:“模仿”微软Copilot,结构性代际因边际成本转为固定成本

B Impact

Prometheus实战-从0构建高可用监控平台(二)

小毛驴的烂笔头

Linux Prometheus

Go语言并发编程核心-Channel的典型应用场景分析

Jack

TPU、TensorFlow—谷歌云“增强”AI 芯片团队,与微软云竞争AI云份额

B Impact

测试需求平台10-DBUtils优化数据连接与SQL Limit实现分页

MegaQi

测试平台开发 三周年连更

响应系统设置的事件

芯动大师

Configuration 响应系统 三周年连更

阿里云DTS数据同步实施

乌龟哥哥

三周年连更

Django笔记十六之aggregate聚合操作

Hunter熊

Python django 聚合 aggregate

全面解析|搞懂Nginx这一篇就够了

浅羽技术

Java nginx 反向代理 服务器 三周年连更

OpenHarmony设备开发常用接口

鸿蒙之旅

OpenHarmony 终端设备开发 三周年连更

Oracle EBS学习篇:Oracle EBS启用诊断功能

back_wang

异步编程|五分钟让你学会局部刷新Ajax技术

浅羽技术

Java ajax js jsp 三周年连更

磁盘I/O性能监控的指标

阿泽🧸

三周年连更 磁盘IO

Sam Altman:巨型AI模型时代已结束, GPT-4是OpenAI最后成果

B Impact

我用ChatGPT的一些实践案例

石云升

AI ChatGPT 三周年连更

如何将 Java 文件转换为 InputStream?这两种方法很管用!

wljslmz

三周年连更

IDEA用上这十大插件绝对舒服

越长大越悲伤

IDEA idea插件

Zendesk从DynamoDB迁移到MySQL和S3,节省了80%多的成本_云端开发_InfoQ精选文章