颜力刚Ligang Yan

如何设计 Amazon Prime Video:一次系统设计模拟面试

一次模拟面试的记录:设计一个最简版的 Amazon Prime Video。梳理大规模视频流媒体平台的核心功能、非功能需求、MVP 架构、安全考虑和后续演进。

amazon-prime-videomock-interviewsystem-design

English version: How to design Amazon Prime Video: A System Design Mock Interview

这篇是一次系统设计模拟面试的整理:设计一个最简版(MVP)的 Amazon Prime Video,讨论一个大规模视频流媒体平台的核心功能和需要考虑的点。

用户角色

  • 内容创作者:上传视频。
  • 观众:搜索和观看视频。

功能需求

  • 上传视频。
  • 按标题、分类或更复杂的条件搜索视频。
  • 观看视频。

非功能需求

  • 可扩展性:支撑大量用户和视频。
  • 可用性:尽量减少停机,保证视频对用户可用。
  • 延迟:缓冲时间短,观看流畅。
  • 可靠性:上传的视频不能丢。

MVP 设计

  1. 上传服务:接收创作者上传的视频,推到对象存储(S3)以便扩展;把元数据(标题等)写入单独的元数据数据库。
  2. 负载均衡器:把上传请求分发到多个上传服务实例,应对高流量。
  3. 搜索服务:用 Elasticsearch 这类 NoSQL 存储,按用户查询高效检索视频元数据。
  4. 流媒体服务:把视频从 S3 送到观众端。
  5. CDN:按地理位置缓存内容,加快分发(列为后续实现)。

安全考虑

  • API 安全:用 OAuth2 的 token 鉴权控制访问。
  • 数据加密:服务之间用 HTTPS 加密传输。
  • CDN 层鉴权:通过 CDN 的访问控制阻止未授权的视频访问。

后续增强

  • 转码:把视频转成多种格式(WebM、mp4),兼容更多设备。
  • 负载均衡与扩缩容:按流量自动扩缩。
  • 监控与告警:监控系统健康,问题及时告警。

结论

这个 MVP 为视频流媒体平台打了地基:为了可接受的用户体验,优先保证可用性而不是强一致性;设计里包含了扩展性考虑,也点出了保护用户数据的安全措施。后续迭代可以补充高级功能和更多需求。

English version.