高可扩展性一直是信息产业相关的公司在快速发展过程中所需要面对的问题。MaxCDN 的首席执行官、ScaleScale 的创始人 Chris Ueland 近日给出了关于 NetFlix 高可扩展性背后的技术架构的报告,本文主要总结和介绍 Chris 提到的企业文化和架构设计方面,希望读者可以从中有所借鉴。
随着我们越来越深入的研究扩展性的问题,我们越来越关注 Netflix。他们很愿意分享他们的故事。此文章是在 Bryan 的帮助下,根据互联网上的信息整理得来。如果你希望阅读此方面信息,我们会继续追加相关内容。否则,文章就到此为止了!
——Chris
Netflix 是如何发展壮大的?
Netflix 是由 Marc Randolph 和 Reed Hastings 在 1997 创建的。公司位于加州的斯科茨谷,初始拥有 30 个固定员工和 925 个临时工。目前,作为世界上领先的互联网电视网络,Netflix 每月为 50 个国家的 6 千 9 百万订阅者提供了超过百亿小时的 TV 节目和电影。该公司非常透明,放置了很多的信息在网上。例如,Netflix 的总体技术架构可以分为应用与数据、业务工具、基础服务、研发和 Open Connect CND 五个大类。如上图所示,每一个大类都包含了若干核心工具或项目。
重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。
Chris 收集并分享了他认为最有意思的内容:Netflix 技术栈高可扩展性的秘密主要包含高可扩展性的企业文化、倚重多种 Amazon 服务、支持多种设备、自身研发的 Netflix Open Connect CDN 以及高可扩展算法等。
高可扩展性的企业文化
Netflix 有一份有关企业文化的著名演讲。该演讲包含了 Netflix 对于 HR 的重新思考。而这些想法正是指导了 Netflix 以后在人员方面的扩展。以下为该演讲的部分内容。从中,读者可以理解 Netflix 如何扩展其软件栈,而这些软件栈为什么可以很好的工作。
如上图所示,Netlfix 注重的是员工的实际工作成果,而非工作时间。不管员工付出努力的多少,只要成果能够获得公司认可,Netflix 就愿意给予较高的薪水或奖金。
而且,Netflix 更多的希望员工能够参与到策略或者决策中,清楚知道项目的来龙去脉和自己在项目中的定位。
点此,读者可阅读演讲的全文。
倚重多种Amazon 服务
Netflix 的框架运行在 Amazon EC2 中,其数字电影的主要拷贝存储在 Amazon S3 中。根据视频分辨率和音频质量,Netflix 需要将每一个电影利用云端编码为 50 多个版本。因此,共计超过 1PB 的数据存储在 Amazon 中。这些内容通过内容传输网络(CDN)发送到不同 ISP 中。
Netflix 在其后端采用了包括 Java、MySQL、Gluster、Apache Tomcat、Hive、Chukwa、Casandra 和 Hadoop 等在内的很多开源软件。
支持多种设备
在 Netflix,不同编译码器和比特率的组合意味着,相同内容需要经过 120 次不同的编码才能被发送到流平台中。
尽管 Netflix 采用了自适应的比特率技术来调整视频和音频质量,以适应客户的下载速度,他们还额外提供了在网站中手动选择视频质量的选项。
用户可以通过计算机、DVD、蓝光播放器、HDTV、家庭影院系统、手机和平板电脑等任何包含 Netflix 应用的联网设备来观看视频。
为了适应不同设备和连接速度,Netflix 提供了以下编解码方式:
- 视频—— VC-1 、 H.264(AVC) 、 H.263 和 H.265(HEVC) ;
- 音频—— WMA 、 Dolby Digital 、 Dolby Digital Plus 、 AAC 和 Ogg Vorbis 。
Netflix Open Connect CDN
Netflix Open Connect CDN 用于拥有超过 10 万个订阅者的大型 ISP。为了减少网络传输代价,ISP 的数据中心中专门包含了低功耗、高存储密度的 Netflix 内容缓存器。该缓存器运行 FreeBSD 操作系统、nginx 和 Bird 互联网路由程序。
点此可观看有关Open Connect 的视频。
高可扩展算法
在2009 年,Netflix 举行一场名为 Netflix Prize 的竞赛。该竞赛提供了大量匿名数据供参赛团队参考并推导出更好的算法。最终,Netflix 利用此竞赛的获奖作品将其算法效率提高了 10.06%。本来,Netflix 准备再次举行类似的比赛。但是,因为 FTC 担心用户隐私可能被泄露,比赛最终并未举行。
Netflix 的推荐系统包含了很多算法。在其产品系统中所使用的两个核心算法就是 Restricted Boltzmann Machines(RBM)和 SVD++。这两个算法通过线性混合的方式形成了一个超高精度的评估系统。其中,RBM 是被修改用于协同过滤的神经网络技术。每个用户拥有一个 RBM,其中的输入节点就代表了他所点评过的电影。而 SVD++ 是 SVD (Singular Value Decomposition) 的一种非对称形式,使用类似于 RBM 的隐形信息。该算法正是由 Netflix Prize 竞赛的获胜团队所研发。读者可以点此阅读Netflix 工程博客中有关定制化主页的内容。
开源项目
Netflix 拥有专门的 GitHub 网址,并维护了一个专门的工程博客(有关 Netflix 开源改革的文章就包含在其中)。其工具涵盖大数据、开发和传输、通用运行时服务和库、数据存储和持久化、性能分析和安全方面等等,感兴趣的读者可以参考 InfoQ 稍后发出的专门谈论 Netflix 开源工具的文章。
读者反馈
Chris 的文章公开后,引起了网友的相关热烈讨论。其中,读者广泛反应的问题就是该文章缺少对 Spring 、 Node.js 、 Guice 、 Docker 、 Groovy 编程语言以及 ElasticBox 等相关框架或工具的分析。
感谢杜小芳对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。
立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册
有云计算问题?立刻联系 AWS 云计算专家:立即联系
评论