架构师经常参考的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的反应式编程库

原文发布于微信公众号 - 服务端技术杂谈(ITIBB2014)

原文发表时间:2017-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

十亿级视频播放技术优化揭密

日前,腾讯研发总监王辉以“十亿级视频播放技术优化揭秘”为主题,用QQ空间的日均播放量一年内从千万级突破到十亿级所面临的严峻考验为切入点,为大家分享视频团队在视频...

47970
来自专栏刘望舒

浅谈Android进阶之路

过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期、成长期、成熟期、现在来说已经进入饱和期。依然记得在...

15920
来自专栏无原型不设计

普通程序员该如何进阶为全栈工程师?

如何成为一名全栈工程师(full stack developer)?互联网最热的话题之一。LinkedIn, Facebook上标榜自己是全栈工程师的人也越来...

79050
来自专栏大数据

大数据驱动的未来网络:体系架构与应用场景(下)网络架构与场景详解

【学术plus】 新添加号内搜索功能! →输入关键词→一键检索您需要的文章。快来试试! 今日荐文 今日荐文的作者为首都经济贸易大学密云分校专家孙远芳,段翠华,中...

22480
来自专栏WeTest质量开放平台团队的专栏

WeTest弱网络测试,再难搭的网络也只要5分钟!

? 玩游戏的朋友相信都极其痛恨下述情况,小助手将其归类为“弱网络五大恨”! 网络连接突然停滞,无提示! 购买商品网络崩溃,打水漂! 断线情况异常频繁,难恢复!...

32130
来自专栏ThoughtWorks

数字化企业的API架构治理

在前文中我们说到,传统企业在逐步建设自己的数字平台过程中,需要抓住交付基础设施、API和架构治理、数据自服务、创新实验基础设施和监控体系、用户触点技术这五个支柱...

36540
来自专栏非著名程序员

处境艰难的 App 开发者们如何自救

这是我朋友的公司不再研发原生 App 的原因——在网页端创业简单的多。怎么会这样呢?基于浏览器的网页端生态系统已经存在了 20 多年,而 App 系统却仅存世 ...

24370
来自专栏程序员互动联盟

要想学会Kali linux事先需要掌握哪些知识?

算起来在linux上开发程序差不多有十几年的时间了,接触linux是从一本杂志上看到的,说到了linux系统如何的高效安全,于是在千方百计的搞了个linux系统...

75620
来自专栏媒矿工厂

5G时代的媒体远程生产

媒体应用需要巨大的网络容量来实现高带宽的流传输,对资源要求苛刻。5G的出现激发了新的解决方案和工具的研究和开发,可以满足媒体行业对网络链路的需求,随时随地提供特...

68520
来自专栏知晓程序

现在,马上用微信小程序买买买的 3 大理由

14750

扫码关注云+社区

领取腾讯云代金券