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

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

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

Canva选择了Amazon Kinesis Data Stream作为其产品分析平台的数据处理解决方案,以降低成本。团队使用SQS和SNS实现了事件驱动架构,但成本占据了80%。为了提高效率,团队选择了KDS并使用事件批处理和压缩技术。同时,他们还使用SQS作为备用机制。Canva还使用Protocol Buffers来定义事件架构。

🔎

延伸解读

成本驱动的架构选型

Canva在初期使用SQS和SNS构建事件驱动架构,虽然易于设置且弹性好,但成本占到了架构运行成本的80%。为了降低成本,团队评估了MSK和KDS,最终选择KDS,因为其成本比SQS+SNS低85%,且维护需求极低。尽管KDS的延迟比MSK高10-20ms,但仍在可接受范围内。这一决策体现了在满足性能要求的前提下,成本优化是架构演进的重要驱动力。

批处理与压缩的降本效果

为了进一步提升KDS方案的成本效益,Canva采用了事件批处理和zstd压缩技术。zstd压缩比达到10倍,每批压缩延迟为100ms。通过压缩,团队每年节省了约60万美元。这表明,在数据管道中,合理的数据压缩和批处理可以显著降低传输和存储成本,对于处理海量事件(如每天250亿)的系统尤为重要。

高尾延迟与限流应对策略

使用KDS时,Canva遇到了高尾延迟(超过500ms)和吞吐量激增时的限流问题,因为每个分片有1MB/s的硬限制。团队实现了回退逻辑,将事件发送到SQS队列,从而将p99延迟控制在20ms以下,且每月SQS费用低于100美元。该回退机制同时作为故障转移方案,在KDS严重降级或中断时确保系统可用性。这提醒我们,即使选择了低成本方案,也需为极端情况设计降级路径。

事件架构的兼容性管理

Canva使用Protocol Buffers定义事件架构,并要求完全的向后和向前兼容性。团队开发了基于protoc的代码生成工具Datumgen,用于验证兼容性并生成多语言代码。该工具还从事件定义中提取元数据,丰富事件目录,包括技术负责人、业务负责人和字段描述。良好的事件架构管理有助于维护数据质量,避免运行时模式不兼容问题,并促进事件发现。

❓

Q&A

Canva为什么选择Amazon Kinesis Data Stream作为数据处理解决方案?

Canva选择Amazon Kinesis Data Stream主要是因为其成本比使用SQS和SNS低85%。

Canva每天处理多少个产品分析事件?

Canva每天处理约250亿个产品分析事件。

Canva在使用KDS时遇到了哪些挑战?

Canva在使用KDS时遇到了高尾延迟和吞吐量限制的问题。

Canva如何提高KDS解决方案的成本效益?

Canva通过事件批处理和zstd压缩技术提高KDS解决方案的成本效益。

Canva使用什么工具来验证事件架构的兼容性?

Canva使用Datumgen工具来验证事件架构的兼容性并生成多种语言的代码。

Canva在初始阶段使用了哪些服务来实现事件驱动架构?

在初始阶段,Canva使用了AWS SQS和SNS来实现事件驱动架构。

🏷️

标签

➡️

继续阅读