50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

创新实力再获认可!腾讯安全MSS获2022年度云原生安全守护先锋

腾讯安全云鼎实验室

云原生 云安全

零信任安全模型-下一代网络安全架构

领创集团Advance Intelligence Group

架构 网络安全 零信任

JDK动态代理为什么必须要基于接口?

码农参上

JAVA开发 动态代理 底层知识

ElasticSearch第二弹之分片原理

阿Q说代码

ES shard replica

基于 ShardingSphere 的得物数据库中间件平台“彩虹桥”演进之路

SphereEx

数据库 中间件 ShardingSphere 实践

Java—NIO

武师叔

6月月更

墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

墨天轮

数据库 oracle postgresql 开源

如何利用数仓创建时序表

华为云开发者联盟

数据库 后端 华为云 时序表

中国移动应用出海发展天地宽

BeeWorks

数字经济时代文化消费新特征

CECBC

力扣每日一练之字符串Day6

京与旧铺

6月月更

vue快速学习、基础用法

开发微hkkf5566

SAVE: 软件分析验证和测试平台

华为云开发者联盟

云计算 测试 后端 开发 软件分析

港股多支个股表现活跃,引发投资者对港股市场回暖猜想与关注

E科讯

NLP 论文领读|改善意图识别的语义表示:有监督预训练中的各向同性正则化方法

澜舟孟子开源社区

人工智能 自然语言处理 深度学习 预训练模型

深入理解和把握数字经济的基本特征

CECBC

解读2022年度敏捷教练行业现状报告

华为云开发者联盟

后端 开发 华为云

Java基础:集合框架之Map

百思不得小赵

map Java’ 6月月更

如何实现一套容器(C语言版)1

祖维

c 容器 泛型 迭代器

SaaS 云工具,产业互联网下的变革利器

小炮

Gartner:如何在中国成功应用多云模式

BeeWorks

区块链为化解信任危机带来新契机

CECBC

你了解shiro吗?手把手教你集成shiro

阿Q说代码

springboot 鉴权 shiro 身份验证

盘点四种WiFi加密标准:WEP、WPA、WPA2、WPA3

wljslmz

wifi 6月月更 无线安全 wpa3 wep

Go语言Redis API基本功能实践

FunTester

观测云更新|观测云帮助文档全新上线;新增 Profile 可观测新增 Profile 可观测;新增 Deployment 网络详情及网络分布等

观测云

2023年广州美博会时间地点详情

Geek_0b38bb

美博会 2023年广州美博会 春季广州美博会 广州春季美博会

泛型的类型擦除后,fastjson反序列化时如何还原?

码农参上

泛型 底层知识 Java 开发

FastApi+Vue+LayUI实现前后端分离

Python研究所

6月月更

20省市公布元宇宙路线图

CECBC

理论+案例,带你掌握Angular依赖注入模式的应用

华为云开发者联盟

程序员 前端 华为云

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