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

Canva产品分析平台的数据处理解决方案评估

Canva在为其产品分析平台选择数据处理解决方案时,评估了多种选项,包括AWS SNS与SQS的组合、Amazon MSK(Managed Streaming for Apache Kafka)和Amazon KDS(Kinesis Data Stream)。最终,Canva选择了Amazon KDS,主要基于其显著的成本优势。

数据处理需求背景

Canva每天处理约250亿个产品分析事件,这些数据用于支持多种用户功能,如个性化推荐、使用统计和洞察分析。此外,这些数据还用于支持新功能的A/B测试。因此,Canva需要一个高吞吐量、高可用性(99.999%的在线率)、成本效益高、可靠且用户友好的数据管道。

初期解决方案:AWS SQS与SNS

在MVP(最小可行产品)阶段,Canva使用了AWS SQS和SNS的组合。这些服务易于设置,提供了出色的弹性和可扩展性,但成本占整个架构运行成本的80%。

寻找替代方案:Amazon MSK与KDS

基于MVP的经验,团队决定寻找更经济的替代方案,并考虑了Amazon MSK和KDS。工程师们比较了这两种服务的成本、性能和维护需求,最终选择了KDS,原因在于其低成本(比SQS+SNS便宜85%)和极低维护需求,尽管其延迟略高于MSK(高10-20ms,但仍在可接受范围内)。

优化KDS的成本效益

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

处理KDS的高尾延迟和限流问题

在使用KDS时,团队特别关注了高尾延迟(超过500ms)和限流问题(当吞吐量超过每分片1MB/s的硬限制时)。工程师们实施了回退逻辑,利用SQS队列,成功将p99延迟控制在20ms以下,同时每月支付不到100美元的SQS费用。这一回退机制还作为KDS严重服务降级或中断时的故障转移机制。

事件定义与协议缓冲区

团队使用Protocol Buffers(Protobuf)来确保架构能够描述和演进事件定义。Canva已经在微服务之间使用Protobuf定义合同,而对于事件定义,还需要确保完全的向后和向前兼容性。工程师们还在protoc基础上创建了自研代码生成工具Datumgen。

Datumgen工具的应用

Datumgen用于验证兼容性需求,并生成多种语言的代码。此外,该工具从事件定义中提取元数据,以增强事件目录数据,包括技术和业务所有者信息以及字段描述。良好记录和及时更新的事件模式帮助Canva保持数据质量,避免运行时模式不兼容的昂贵问题,并帮助工程师发现可用的产品分析事件。

阅读 26
0 条评论