微信号:infoqchina

介绍:有内容的技术社区媒体

Netflix的企业文化与架构设计丨名企探秘

2015-11-25 08:12 张天雷 译
Netflix是一家美国公司,在美国、加拿大提供互联网随选 流媒体 播放,定制DVD、 蓝光光碟 在线出租业务。该公司成立于1997年,总部位于 加利福尼亚州 洛斯盖图,1999年开始 订阅 服务。2009年,该公司可提供多达10万部DVD电影,并有1千万的订户。2007年2月25日,Netflix宣布已经售出第10亿份DVD。

高可扩展性一直是信息产业相关的公司在快速发展过程中所需要面对的问题。MaxCDN的首席执行官、ScaleScale的创始人Chris Ueland近日给出了关于NetFlix高可扩展性背后的技术架构的报告,本文主要总结和介绍Chris提到的企业文化和架构设计方面,希望读者可以从中有所借鉴。


Chris:“随着我们越来越深入的研究扩展性的问题,我们越来越关注Netflix。他们很愿意分享他们的故事。此文章是在Bryan的帮助下,根据互联网上的信息整理得来。如果你希望阅读此方面信息,我们会继续追加相关内容。否则,文章就到此为止了! ”


Netflix是如何发展壮大的?


Netflix是由Marc Randolph和Reed Hastings在1997创建的。公司位于加州的斯科茨谷,初始拥有30个固定员工和925个临时工。目前,作为世界上领先的互联网电视网络,Netflix每月为50个国家的6千9百万订阅者提供了超过百亿小时的TV节目和电影。该公司非常透明,放置了很多的信息在网上。例如,Netflix的总体技术架构可以分为应用与数据、业务工具、基础服务、研发和Open Connect CND五个大类。如上图所示,每一个大类都包含了若干核心工具或项目。


  • 关注InfoQ[ID:infoqchina]了解更多技术领域干货内容。



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内容缓存器。该缓存器运行FreeDSB操作系统、nginx和Bird互联网路由程序。


高可扩展算法


在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工程博客中有关定制化主页的内容。


  • 版权归属InfoQ,禁止商业用途抄袭转载



荐文



自荐


『 InfoQ原创作者招募第一期 』

如果你自信是技术人才,有领域专长,有从业经验,有职业态度,有观点灼见,来InfoQ原创专家作者团,写你感兴趣的文章,分享你独到的观点,给有共鸣的人看……

怎么加入?

联系微信[muyu4444]

添加请注明原创作者



 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 和Tomcat学设计模式 | Facade模式与请求处理 【达内分享】Windows操作系统30年进化史 程序bug导致了天大的损失,要枪毙程序猿吗? 大学毕业十年,你现在的生活过得怎样? swift与OC之间不得不知道的21点