NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

发布
暂无评论

今年面试大厂屡屡失败,一波三折最终入职拼多多java岗,我经历啥?(1)

Java 程序员 后端

从三线城市公司跳槽美团关键,啃透了腾讯T8-3手写Java高级笔记

Java 程序员 后端

从单体式架构迁移到微服务架构

Java 程序员 后端

从筛选简历和面试流程讲起,再给培训班出身的程序员一些建议

Java 程序员 后端

以后面试再也不怕被问Java并发编程了,多亏了这本PDF电子书

Java 程序员 后端

什么是分布式系统,如何学习分布式系统

Java 程序员 后端

什么?JDK16刚刚又发布了?赶紧尝尝鲜

Java 程序员 后端

从这五个方面看hashmap,新手一遍就能懂

Java 程序员 后端

Github霸榜月余~,原来是阿里大咖的千亿级并发系统设计手册上线了

Java 编程 程序员

什么是事务数据库?

Java 程序员 后端

从美术生到程序员转型之路【我的故事】

Java 程序员 后端

从JVM锁到Redis分布式锁,对小白十分友好

Java 程序员 后端

JavaScript 进制问题

空城机

JavaScript 11月日更

从内存分析局部变量与成员变量的区别(Java)

Java 程序员 后端

从头到尾说一次 Spring 事务管理(器),还不会你打我!

Java 程序员 后端

用明道云实现与物流信息交互

明道云

企业级的SaaS多租户微服务平台SpringBlade 项目,源码分享

Java 程序员 后端

什么!有一定的学习门槛你就学不好?Java多线程,从基础到并发模型统统帮你搞定!

Java 程序员 后端

今日话题:程序员,从培训班出来的都是垃圾?你们是怎么看待的

Java 程序员 后端

作为一名程序员,你觉得最重要的能力是什么?

Java 程序员 后端

传授一套月薪20k程序员的高薪秘籍

Java 程序员 后端

今年面试大厂屡屡失败,一波三折最终入职拼多多java岗,我经历啥?

Java 程序员 后端

从SpringBoot源码看资源映射原理

Java 程序员 后端

从一道 LRU 算法题说到缓存淘汰策略

Java 程序员 后端

从架构演进的角度聊聊Spring Cloud都做了些什么?

Java 程序员 后端

什么会导致Java应用程序的CPU使用率飙升?

Java 程序员 后端

什么才是Java的基础知识?

Java 程序员 后端

用EasyRecovery怎么恢复电脑中已删除的视频

淋雨

数据恢复

融云与 HIFIVE 达成战略合作,共创「沉浸式」社交解决方案

融云 RongCloud

通信云 语聊房 语音社交

手慢无!2021 OceanBase 数据库大赛专属键盘等你来拿!

OceanBase 数据库

数据库 开源 架构 大赛 11月日更

作为Java面试官,我会问Java程序员一些什么问题?

Java 程序员 后端

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