Netflix 点击按钮的背后
本文介绍了 Netflix 作为视频网站背后所涉及的客户端,服务端,网络等等相关的技术。
- 一个看起来很简单的网站,在用户量级上去后就会变的非常有挑战。
- Netflix 工程博客记录了很多他们的技术架构文章。
- Netflix 使用混合云:AWS + Open Connect
- Netflix 的三大核心组件:客户端,服务端,CDN
- Netflix 跟 EC2 发布在同一年,所以那时候还得自搭数据中心。自建 DC 的问题主要就是效率特低。
- 2008 年出过一次大事故,比起维护一个数据中心,工程师们觉得还是维护产品更重要更简单,所以全线切去 AWS。历经八九年经营,现在使用着上千台 EC2 实例。
- Netflix 需要比 AWS 更稳定,通过在 North Virginia,Oregon,Dublin 三地搭服务,可以做到某地出问题了就切流量去别的。作为客户端,甚至可能都不会意识到后端某地发生了故障。Netflix 每个月也都会出一次演练 aws 挂了,整个集群可以在六分钟内切走。关于这方面,Netflix 可以说在业内做的比较领先。
- S3 存储着视频数据,EC2 则是获取视频元数据的入口点。
- Netflix 使用 DynamoDB & Cassandra 作为分布式数据库,另有一系列配套的数据分析流水线计算诸如推荐等数据。
- 作为视频播放领域的特定问题,服务端转码是指服务器会为客户端预先转码好最适合特定设备的编码视频。这些转码需要耗费很多 CPU 资源。Netflix 从上游内容供应方(video source media)那里获得数据,然后校验颜色,掉帧等情况,然后切成 chunk 分批处理,最后重新合并所有 chunk,再次校验成功才推送到 CDN,全程大约需要 30 分钟。
- 目前 Netflix 支持大约 2200 种不同的设备,例如 iPhone,XBox,Wii,Kindle,AppleTV,等等。这些优化的视频会针对网速,播放质量等做适配。
- Netflix 自建 CDN 以满足自己变态的需求。每个存储视频资源的地方都叫 PoP(Point of present)。大 CDN 提供方诸如 Akamai 什么的不能满足他们的需求,例如切换到另外一个 PoP 以换取别的资源。基于 AWS 的技术经过很多工程师的运营已经足够了本钱,所以自己造更好。他们使用 Open Connect 建 CDN。
- 建 CDN 不需要数据中心,只要找遍布全世界的 IXPs。(IXP 就是网络互联的节点)