写点什么

Canva 选择 Amazon KDS 而非 SNS+SQS,每天处理 250 亿个事件,节省了 85% 的成本

作者:Rafal Gancarz

  • 2024-09-05
    北京
  • 本文字数:1274 字

    阅读完需:约 4 分钟

Canva 选择 Amazon KDS 而非 SNS+SQS,每天处理 250 亿个事件,节省了 85%的成本

Canva 对其产品分析平台评估了多种不同的数据处理解决方案,包括 AWS SNS 和 SQS 的组合、MKS 以及 Amazon KDS,最终选择了后者,主要是因为其成本要低得多。该公司比较了这些解决方案的许多方面,比如性能、维护工作量以及成本等。


Canva 每天处理约 250 亿个产品分析事件,以支持许多面向用户的功能,如个性化及推荐、使用统计及见解。所捕获的数据也是支持任意新产品特性 A/B 测试的关键。


收集和分发产品分析事件的数据管道不仅需要支持非常高的吞吐量,还需要支持高可用性(99.999% 的正常运行时间),并且还要具有成本效益、可靠性和用户友好性。负责为产品分析提供事件驱动架构(EDA)的团队在 MVP 的早期阶段使用了 AWS SQS 和 SNS 的组合。这些服务易于设置,并提供了出色的弹性和可扩展性,但它们的成本占了运行架构的 80%。



使用 Amazon KDS 的产品分析数据管道(来源:Canva 工程博客)


基于最初的 MVP 经验,该团队决定寻找能够以较低成本满足性能要求的替代方案,并考虑了另外两种 AWS 服务:Amazon Managed Streaming for Apache Kafka (MSK) 和 Amazon Kinesis Data Stream(KDS)。工程师们比较了这些服务的成本、性能和可维护性,最终选择了 KDS,因为它本身的成本低(比 SQS+SNS 便宜 85%),而且维护的成本也极低,尽管与 MSK 相比延迟更高(高 10-20 毫秒,但可以接受)。


为了提高基于 KDS 的解决方案的成本效益,该团队使用了事件批处理和 zstd 压缩,压缩比为 10 倍,每批压缩延迟为 100 毫秒。工程师估算,使用压缩技术每年可节省 60 万美元。


使用 KDS 时需要特别注意的一个方面是尾部延迟高(超过 500 毫秒),并且当吞吐量峰值超过每个分片 1MB/s 的硬限制阈值时会进行限流。工程师们实现了一种利用 SQS 队列的回退逻辑,结果实现了低于 20 毫秒的 p99 延迟,同时每月为 SQS 支付的费用不到 100 美元。回退选项还兼作了故障转移机制,以防 KDS 遇到严重的服务降级或中断。



在 KDS 限流情况下,回退到 SQS(来源:Canva 工程博客)


该团队使用 Protocol Buffers 来确保架构的可描述性以及随着时间推移来演进事件定义。Canva 已经在使用 Protocol Buffers 来定义微服务之间的契约,但对于事件定义,它还需要完全的向后和向前兼容性。工程师们还在 protoc 之上创建了一个自主研发的代码生成工具。


Datumgen 用于验证兼容性要求并生成多种语言的代码。此外,该工具从事件定义中提取元数据,以增强事件目录数据,其中包含有关技术和业务所有者的详细信息以及字段描述。文档完备且最新的事件模式有助于 Canva 保持数据质量,避免运行时因模式不兼容而导致的代价高昂的问题,并使工程师能够发现可用的产品分析事件。


作者介绍


Rafal Gancarz 是一位经验丰富的技术领导者和专家。他目前正在帮助星巴克打造可扩展、弹性和成本效益高的商务平台。此前,Rafal 曾为思科、埃森哲、凯德、ICE、Callsign 等公司设计和构建大规模、分布式和基于云的系统。他的兴趣涵盖了架构与设计、持续交付、可观测性和可维护性,以及软件交付的社会技术和组织方面。


原文链接:

https://www.infoq.com/news/2024/08/canva-amazon-kinesis-data-stream/


2024-09-05 08:008882

评论

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

推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计

汀丶人工智能

自然语言处理 推荐系统 推荐算法 搜索算法

人人看得懂的ChatGPT技术原理解析

Baihai IDP

人工智能 自然语言处理 NLP 大模型 12 月 PK 榜 ChatGPT

DevOps 与 FinOps:二者可以协同吗?

SEAL安全

DevOps FinOps 企业号 2 月 PK 榜

阿里前端二面经典手写面试题汇总

helloworld1024fd

JavaScript 前端

GAIDC 2023盛会迎来大模型论坛“主场”,百度飞桨护航大模型产业发展

飞桨PaddlePaddle

深度学习 飞桨

实现一个简单的Database12(译文)

GreatSQL

sqlite greatsql greatsql社区

瓴羊Quick BI移动端自助分析功能受追捧

巷子

react源码分析:babel如何解析jsx

flyzz177

React

瓴羊Quick BI智能报表打破“中式”报表限制,提速增效

夏日星河

React源码分析8-状态更新的优先级机制

goClient1992

React

HarmonyOS Connect “Device Partner”专场FAQ来啦!

HarmonyOS开发者

HarmonyOS

vue的两种服务器端渲染方案

京东科技开发者

Vue 服务端 nextjs nuxt 渲染方案

MIAOYUN 2023年度战略共识会

MIAOYUN

战略共识 战略会

IoT设备身份三元组烧录方案汇总——实践类

阿里云AIoT

阿里云 物联网 IoT

2023前端二面经典手写面试题

helloworld1024fd

JavaScript 前端

一个诡异的 Pulsar InterruptedException 异常

小小怪下士

Java 程序员 后端

从React源码分析看useEffect

goClient1992

React

聊聊火出圈的ChatGPT

江湖修行

人工智能 AI ChatGPT

js函数柯里化-面试手写版

helloworld1024fd

JavaScript 前端

React源码分析8-状态更新的优先级机制

goClient1992

React

瓴羊Quick BI可视化大屏功能强劲

对不起该用户已成仙‖

什么是物联网?常见IoT 物联网协议最全讲解——基础知识

阿里云AIoT

人工智能 安全 前端开发 网络协议 传感器

佳杰云星:基于鲲鹏DevKit开发多云管理平台,云资源综合管理能力提升约25%

极客天地

华为Push用户增长服务:精准触达,加速增长

HarmonyOS SDK

HMS Core

飞桨-鹏城云脑发行版亮相第四届启智开发者大会,软硬一体化助力科研

飞桨PaddlePaddle

深度学习 paddle 飞桨

react源码中的生命周期和事件系统

flyzz177

React

PCB生产工艺|主流程之AOI,华秋一文读懂其子流程

华秋电子

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript 前端

运联智库发布跨境电商物流50强排行榜

联营汇聚

react源码分析:实现react时间分片

flyzz177

React

Canva 选择 Amazon KDS 而非 SNS+SQS,每天处理 250 亿个事件,节省了 85%的成本_云计算_InfoQ精选文章