写点什么

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

评论

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

StarRocks 技术内幕 | Join 查询优化

StarRocks

数据库

从0开始,用Go语言搭建一个简单的后端业务系统

闫同学

后端 go语言 11月月更

从2开始,在Go语言后端业务系统中引入缓存

闫同学

Go 设计 后端 11月月更

从1开始,扩展Go语言后端业务系统的RPC功能

闫同学

后端 go语言 11月月更

跟着卷卷龙一起学Camera--信号采样01

卷卷龙

ISP camera 11月月更

如何在知乎平台上做营销推广:推荐几种引流方式

石头IT视角

React组件之间的通信方式总结(下)

beifeng1996

React

年前端react面试打怪升级之路

beifeng1996

React

React源码分析2-深入理解fiber

goClient1992

React

设计模式之美-面向对象、设计原则、设计模式、编程规范、重构的关系

GalaxyCreater

设计模式

跟着卷卷龙一起学Camera--MIPI 03

卷卷龙

ISP camera 11月月更

百度前端react面试题总结

beifeng1996

React

跟着卷卷龙一起学Camera--信号采样02

卷卷龙

ISP camera 11月月更

React组件之间的通信方式总结(上)

beifeng1996

React

决策树-泰坦尼克号幸存者预测

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

史海峰:成为技术领导者 从技术到管理的必经之路丨声网开发者创业讲堂 • 第 5 期

声网

技术管理 人工智能’

Linux中 dir 命令还能这样玩!

wljslmz

Linux 11月月更

企业级业务架构设计:方法论与实践 学习笔记

程序员架构进阶

业务架构 TOGAF 11月日更 Zachman

互联网安全体制的挑战与机遇

阿泽🧸

互联网安全 11月月更

📢利用Vite插件助力证书安装

小鑫同学

前端 插件 11月月更

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

React源码分析4-深度理解diff算法

goClient1992

React

MySQL能力全开放,OceanBase 社区版 4.0 正式上线

OceanBase 数据库

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

一次基于Fastjson的JNDI注入

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

圆满落幕!回顾 eBPF 技术的发展与挑战

OpenAnolis小助手

Linux 云原生 ebpf 云栖大会 龙蜥社区

极速体验docker容器健康

程序员欣宸

容器化 docekr 11月月更

Ansible 部署的时候提示错误 SSH password instead

HoneyMoose

这样回答前端面试题才能拿到offer

loveX001

JavaScript

js异步编程面试题你能答上来几道

loveX001

JavaScript

前端必会面试题总结

loveX001

JavaScript

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