首届AICon深圳正式启动|AI实践哪家强?来 AICon,解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

名可名

顿晓

5月日更 命名

本文标题不能描述本文内容

小天同学

读书 哲学 读后感 4月日更

外行在谈论流派,大师在讨论颜料

顿晓

极限编程 5月日更 门道

技术探索系列 - 轻松带你掌握 JMM(1)

码界西柚

Java JVM JMM 并发 5月日更

【LeetCode】员工的重要性Java题解

Albert

算法 LeetCode 5月日更

书单 | 月度畅销好书,助你技能满格,摆脱低效,走向财富人生

博文视点Broadview

InfoQ & 声网Agora 技术开放日邀请函

Jessie

音视频 声网

2021年十大突破性技术

石云升

读书笔记 5月日更

了解代理服务器

进击的梦清

nginx Linux 运维 代理原理

Excel用户如何学习数据分析语言DAX?

博文视点Broadview

SwiftUI @ Netflix:推动新技术落地是怎样一种体验?

故胤道长

swift 移动开发 iOS Developer SwiftUI

限时白嫖!腾讯内部员工培训Java资料,网友:大厂就是不一样

牛哄哄的java大师

Java

如何在 GitHub 上面为你的项目选择开源许可证

HoneyMoose

复杂Gremlin查询的调试方法

Tom(⊙o⊙)

gremlin调试

当你觉得老板的决策是错的,你会怎么做?

石云升

职场经验 5月日更

超硬核!阿里技术大牛肝了2晚整理的Java知识,这也太强了!

飞飞JAva

Java Java泛型

鹅厂疯子整理了万字Java笔记!小白:硬核资源基础知识已入门

牛哄哄的java大师

Java Object

你的烂代码终于有了解决方案

博文视点Broadview

从零搭建一款PC页面编辑器PC-Dooring

徐小夕

大前端 可视化 lowcode 代码编辑器

Redis-技术专区-知识问题总结大全(上篇)

码界西柚

redis 5月日更 问题分析

当代软件IT大学生的技术学习之路

Nydia

签约计划

将本地文件/文章上传到 GitHub 的流程

彭宏豪95

git GitHub 效率 编程

BPF 之巅:洞悉 Linux 系统和应用性能

博文视点Broadview

北美亚特兰大一金融服务公司面试总结

HoneyMoose

网络攻防学习笔记Day1

穿过生命散发芬芳

5月日更 网络攻防

手机屏幕投屏到桌面的离线方案

黄敏

如何选择开源许可证

HoneyMoose

【人间碎片】关于努力这件事

南吕

人生修炼 人生故事

OAuth 2.0 了解了,OAuth 2.1 呢?

Zhang

OAuth 2.0 认证授权 OAuth 2.1

fastadmin+xunsearch题库系统搭建教程

一颗小树

php thinkphp fastadmin xunsearch 题库系统

A “word-wrap” functionality(一个字符串包裹函数)

HoneyMoose

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