Duolingo在超级碗期间的营销活动与技术架构
背景
Duolingo是一家利用AWS云平台提供外语学习服务的教育平台,拥有近2700万月活跃用户。在2023年超级碗期间,Duolingo策划了一项营销活动,计划在广告播放时向用户发送数百万条移动推送通知。
挑战
- 精准触发:广告播放时间无法提前预知,需要人工触发推送通知的发送。
- 高并发与去重:需要在短时间内发送400万条推送通知,并确保每个用户仅收到一条通知,避免重复。
- 系统扩展性:确保系统能够在短时间内处理高并发请求,同时避免性能瓶颈。
技术架构
Duolingo构建了一个基于AWS的异步微服务架构,主要包括以下组件:
- API Gateway:作为系统的入口。
- AWS ECS:运行Python组件。
SQS队列:用于消息队列管理,包括:
- FIFO SQS队列:用于消息去重,支持5分钟的去重窗口,但每秒最多处理300条消息。
- 普通SQS队列:用于触发推送通知的发布,通过数据批处理支持高并发。
- DynamoDB和S3:存储用户和设备数据。
- CloudWatch:用于系统监控和可观察性。
实施过程
- 数据准备:在活动前,工程师将400万用户的设备映射数据上传至S3。
- 资源扩展:在超级碗广告播放前几小时,手动扩展了5000个通知工作实例,并部署了20个临时工作节点用于数据预取。
- 触发发送:营销经理在广告播放时手动触发推送通知的发送。
- 性能表现:系统在3.9秒内发送了95%的通知,5.7秒内发送了99%的通知。
测试与优化
为了确保系统能够应对高并发,团队进行了三轮推送通知发送测试,从100万用户开始逐步验证系统的扩展性和性能。
问题与解答
Google和Apple的推送速度控制:
- Duolingo无法控制Google(FCM)和Apple(APN)的推送速度,但确认了它们没有特定的速率限制。
云成本增加:
- 尽管活动时间短暂,但云成本有显著增加。
总结
Duolingo通过构建高扩展性的异步架构,成功在超级碗期间实现了数百万条推送通知的精准发送,展示了其在技术架构设计和系统优化方面的能力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。