[译] 架构师经常参考的 Netflix 架构,它的全貌是怎样的?

标签: dev | 发表时间:2017-03-21 08:00 | 作者:
出处:http://itindex.net/admin/pagedetail

导读:在架构讨论中,我们碰到的问题常常会落到一些经典的架构模式中,而 Netflix 提供了几乎各种模式的参考范例。因此了解 Netflix 架构全貌可以帮助我们进一步体系性的了解互联网架构。本文由高可用架构翻译,转载请注明出处。


随着我们深入研究可扩展架构,我们越来越多的接触到 Netflix。 他们的技术非常开放。 这篇文章是我们与 Bryan一起完成。所有信息是从互联网上收集而来。欢迎在留言中补充更多 Netflix 架构的资料。




我们看到的 Netflix 架构在可扩展方面可取之处



Netflix 由 Marc Randolph 和 Reed Hastings 于 1997 年在加州 Scotts Valley 成立,由 30 名员工和 925 名租赁用户组成,现在是全球领先的互联网电视网络,在 50 个国家拥有超过 6,900 万用户每月享受超过 100 亿小时的电视节目和电影。 他们对于技术非常透明,并在网上发布了很多信息。 我们收集并分享了我们认为最可取的一些点:



可扩展文化


NetFlix 有一个关于企业文化的著名演讲。 这些概念是关于重新思考人力资源。 他们很多可扩展人力的理念在这个演讲中得到了完整的表述。 下面是其中一些示例幻灯片和演示文稿。这给我们了解 Netflix 的企业文化提供了一些重要的背景,我们从中可以了解他们如何扩展他们的软件栈,以及它为什么工作。




部署在 Amazon 云上的架构



Netflix 的基础架构架设在 Amazon EC2 上,视频数据存储在 Amazon S3 上。根据视频分辨率和音频质量,每个电影被编码成超过 50 个不同版本存储在不同的 EC2 上。 亚马逊上存储了超过1PB的数据。 这些数据被发送到 CDN 以将内容就近提供给各地的 ISP。


Netflix 在后端使用了一些开源软件,包括 Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra 和 Hadoop。



多设备支持


Netflix 上的巨大数量的编解码器和比特率组合意味着“同一个视频在传送到所有流式平台之前,需要进行120次不同规格的编码”。


虽然 Netflix 使用自适应比特率流技术来调整视频和音频质量以匹配客户的下载速度,但它们还为用户提供了在其网站上选择视频质量的能力。


您可以从任何提供 Netflix 应用程序的互联网连接设备立即观看,例如计算机,游戏机,DVD或蓝光播放器,HDTV,机顶盒,家庭影院系统,手机或平板电脑。


他们支持以下编解码器中的每个标题具有不同的比特率,使它们在设备和连接上工作。


  • 视频 – VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)

  • 音频 – WMA, 杜比数字, 杜比数字+, AAC 和 Ogg Vorbis


Netflix 开放连接 CDN


Netflix 开放连接 CDN 适用于拥有超过 10 万订阅者的大型 ISP。 专门构建的低功耗高存储密度设备,在 ISP 的数据中心内缓存 Netflix 内容,以降低互联网传输成本。 此设备运行 FreeBSD 操作系统,nginx 和 Bird Internet 路由守护程序。



NetFlix 在巴黎的开放连接 CDN – 图片版权 @dtemkin twitter,相关视频地址见 [2] 。


可扩展及推荐算法


2009 年,Netflix 进行了一场名为 Netflix 奖的竞赛。他们开放了一堆匿名数据,允许团队尝试并开发更好的推荐算法。他们当时的系统从获胜的队伍的算法中获得了10.06% 的提升。 Netflix 后来也计划组织一次新的 Netflix 奖竞赛,但最终因为 FTC 的隐私问题未能举办。


Netflix 推荐系统由许多算法组成。在生产系统中使用的两个核心算法是受限玻尔兹曼机(Restricted Boltzmann Machines, RBM)和被称为 SVD++ 的矩阵因子分解的形式。这两种算法使用线性混合来产生单个较高精度预估。


受限的玻尔兹曼机(RMB)已经被修改为在协同过滤方式工作的神经网络。每个用户都有一个代表电影用户额定输入节点的 RBM。


SVD++ 是SVD(奇异值分解)的不对称形式,其利用诸如 RBM 的隐式信息。它是由 Netflix 奖竞赛的获胜团队开发的。


在他们的工程博客上,Netflix 团队介绍了如何实现一个个性化主页 [3]


开源项目


团队的开源项目在 https://netflix.github.io/。


Netflix 有一个优秀的工程博客,他们也有一篇介绍 Netflix 开源演变的博客。[4]


Netflix 全栈架构一览


大数据


  • Genie - 对我们的各种数据处理框架(特别是 Hadoop)的强大抽象(基于REST)。

  • Inviso - 详细了解我们的Hadoop作业和集群的性能。

  • Lipstick - 以清晰,直观的方式显示Pig job的工作流程。

  • Aegisthus - 允许从 Cassandra 大量获取数据用于下游分析处理。


构建和交付工具


  • Nebula- Netflix 内部构建基础设施。

  • Aminator - 用于创建EBS AMI的工具。

  • Asgard - 用于 Amazon Web Services(AWS)中应用程序部署和云管理的 Web 界面。


通用运行时服务和库


  • Eureka - 用于 Netflix 云平台的服务发现。

  • Archaius - 分布式配置管理。

  • Ribbon- 弹性和智能化的进程间和服务间通信。

  • Hystrix - 提供跨服务调用的可靠性,隔离运行时延迟和容错。

  • Karyon 和 Governator - JVM容器服务。

  • Prana sidecar - Prana 在实例中提供代理功能。

  • Zuul - 在部署的边缘节点提供可进行脚本化的代理。

  • Fenzo - 为云本地框架提供高级调度和资源管理。


数据持久化


  • EVCache 和 Dynomite - 用于大规模使用 Memcached 和 Redis。

  • Astyanax 和 Dyno - 以更好地使用云端数据存储的客户端库。


分析、可靠性和性能相关


  • Atlas - 时间序列自动测量平台

  • Edda - 跟踪云端变化的服务

  • Spectator - 将应用程序代码与 Atlas 轻松集成

  • Vector - 以最小的开销监控高精度主机性能指标。

  • Ice - 监控运营成本和云利用趋势。

  • Simian Army - 测试 Netflix 实例的随机故障。


安全


  • Security Monkey - 帮助监控和保护基于AWS的大型环境。

  • Scumblr - 利用全网针对性搜索定位特定安全问题。

  • MSL - 一种可扩展且灵活的安全消息传递协议,解决了许多安全通信用例和需求。

  • Falcor - 通过虚拟 JSON 图将远程数据源表示为单域模型。

  • Restify - 专门用于Node.js Web API服务的REST框架

  • RxJS - JavaScript的反应式编程库


请关注高可用架构以了解更多 Netflix 架构后续介绍。


相关链接:


  1. 原文:http://www.scalescale.com/the-stack-behind-netflix-scaling/

  2. https://www.youtube.com/watch?v=mBCXdaukvcc

  3. http://techblog.netflix.com/2015/04/learning-personalized-homepage.html

  4. http://techblog.netflix.com/2015/10/evolution-of-open-source-at-netflix.html


推荐阅读



本文由高可用架构翻译,欢迎加入国外优秀架构文献翻译小组,可以通过公众号菜单「联系我们」了解详情。


高可用架构

改变互联网的构建方式


长按二维码 关注「高可用架构」公众号


相关 [架构 师经 参考] 推荐:

[译] 架构师经常参考的 Netflix 架构,它的全貌是怎样的?

- - IT瘾-dev
导读:在架构讨论中,我们碰到的问题常常会落到一些经典的架构模式中,而 Netflix 提供了几乎各种模式的参考范例. 因此了解 Netflix 架构全貌可以帮助我们进一步体系性的了解互联网架构. 本文由高可用架构翻译,转载请注明出处. 随着我们深入研究可扩展架构,我们越来越多的接触到 Netflix.

Eucalyptus私有云 -- 参考架构(小型开发测试云)

- - 婉兮清扬
 If the target deployment is one that will need to scale to accommodate more capacity in the future, the  Dev/Test (Large) reference architecture should be used, instead.

电商参考架构第二部分:库存优化方法

- - SegmentFault 最新的文章
在电商参考架构系列的第一部分中,我们介绍了一个大数据量电商如何使用MongoDB作为一个庞大产品目录持久层的一些最佳实践. 第一部分中包括了索引、模式以及查询优化以保证我们的目录能够支持类似于搜索、单店价格以及在高效率方式下多方面检索及浏览等特性. 在接下来的两篇博客中,我们将介绍相似类型的优化方法,并且将其应用到一个电商业务中完全不同的方面——库存.

从小型网站到超大规模网站的MySQL参考架构

- - 互联网旁观者
Oracle发布《 面向大规模可伸缩网站基础设施的MySQL参考架构》白皮书,针对将MySQL用作数据存储的不同类型和不同规模的网站给出了推荐的拓扑结构. 根据分别提供4类服务——用户和会话管理、电子商务、分析类应用 (多结构数据)和CMS(元数据)——的网站的规模和可用性要求(如下表所示),这份白皮书给出了4个参考架构.

Solr调优参考

- - 淘宝网通用产品团队博客
共整理三部分,第一部分Solr常规处理,第二部分针对性性处理,前者比较通用,后者有局限性. 务必根据具体应用特性,具体调节参数,对比性能. 具体应用需要全面去把控,各个因素一起起作用. 第一部分. E文连接 http://wiki.apache.org/solr/SolrPerformanceFactors.

架构

- - IT瘾-dev
网关:Nginx、Kong、Zuul. 缓存:Redis、MemCached、OsCache、EhCache. 搜索:ElasticSearch、Solr. 熔断:Hystrix、resilience4j. 负载均衡:DNS、F5、LVS、Nginx、OpenResty、HAproxy. 注册中心:Eureka、Zookeeper、Redis、Etcd、Consul.

CSS3.0参考手册下载

- - CSS库
中文资料少,对英文翻译功底要求较高;. 基础语法要求字斟句酌,避免产生歧义;. 兼容性列表涉及浏览器及版本众多;. 草案中的Grid布局被业界同仁普遍认为比“天书”还难…. CSS3 还是草案,中文资料少之又少,基本上都是一篇内容转来转去,而我们的手册从基础语法到示例制作,都是根据W3C工作草案进行翻译,并结合自身的沉淀制作示例.

Solr调优参考-续

- - 淘宝网综合业务平台团队博客
这篇blog主要以实践出发,从顶到底,从大到细的思路来进一步描述,solr优化,并且是基于横向发展来说的(管理更多core),对于纵向的(core内部、搜索核心技术). 例如分词、queryparse、分词、实时、分布式的优化、排序等偏轻. 文章有不合理,或者错误的请及时反馈给鹰缘. 最重要、最影响系统整体稳定和吞吐量(针对业务总索引布局优化).

solr的参考资料

- - 企业架构 - ITeye博客
大多数的应用程序将数据存储在关系数据库、xml文件中. 对这样的数据进行搜索是很常见的应用. 所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入.           目标.      能够读取关系数据库中的数据.      通过可配置的方式,能够将数据库中多列、多表的数据生成solr文档  .

信息架构

- Michael - Tony-懒得设计
写几篇关于信息架构的文章,系统地输出我理解的信息架构. 发了一篇关于招信息架构实习生的博客,收到不少简历. 但谈起信息架构,多数不了解,稍微了解的扯了很多很偏的东西. 随手搜索了一下,我发现了原因:. 1 《web信息架构》这本书太概念,太学术. 2 有人绑架了“信息架构”这个词,拿出去唬人,内容都是皮毛或者是根本和信息架构不沾边的东西.