首页 > 其他分享 >Netflix 网站架构学习

Netflix 网站架构学习

时间:2023-05-21 23:24:09浏览次数:44  
标签:视频 架构 Netflix 网站 CDN Connect OCAs Open

Netflix 网站架构学习

Netflix 架构的特点是他们没有自建数据中心,而是将服务直接架设在 AWS 的云服务上(EC2 和 S3),并通过自建 CDN Open Connect 提供高质量的点播服务。Netflix 采用微服务架构,将复杂业务流程拆解成独立的小型服务,服务间通过 REST 或 RPC 彼此调用。

Netflix 架构

CDN

CDN 的主要原理是利用位于不同地理位置的服务器集群,将内容存储在靠近用户的服务器上,从而减少内容传输的延迟和带宽使用。

当用户请求访问特定的内容时,CDN 会自动为用户提供最接近他们所在地理位置的服务器上的内容,这将使用户能够更快地访问网站和其他在线服务。如果某个服务器出现故障或网络拥塞,CDN 可以自动将用户请求重新路由到其他可用的服务器上,从而确保内容始终可用。

CDN 中内容的来源称为 Origin,而缓存服务器称为 POP(Point of Presence)。

视频网站使用 CDN 能带来哪些优势:

  • 性能优势:CDN 节点距离用户更近,请求内容的时延更小;
  • 可用性:单个节点宕机,其他节点能仍能提供服务;即使源服务器宕机,CDN 仍能利用缓存的数据提供服务;
  • 安全性:CDN 能缓解 DDos 攻击并提供其他安全功能;
  • 可拓展性:CDN 按使用的流量计费,且可以处理流量高峰。

Open Connect

Open Connect 是 Netflix 自建的视频 CDN,它是一种主动的、有针对性的缓存解决方案(相对于缓存未命中时找 Origin 拉取内容的 CDN 方案)。

Open Connect 由一堆专用服务器构成,这些服务器被称为 OCAs(Open Connect Appliances)

  • 存储编码的视频/图像文件,并通过 HTTP / HTTPS 将这些文件提供给客户端设备
  • 部署在 IXP 中,和 ISP 对等互连或直接部署在 ISP 网络内部

OCAs 和客户设备、Netflix AWS 服务之间的交互

  • OCAs 不存储客户数据(比如观看历史、DRM 信息)
  • OCAs 只执行两件事
    • 当客户端设备请求内容时,OCAs 服务器会通过 HTTP/HTTPS 提供内容
    • 向 AWS 中的 Open Connect 控制平面服务报告自己的状态
  • Open Connect 控制平面服务
    • 接收 OCAs 报告的数据,并利用这些数据来控制客户端通过 URL 访问最优的 OCA
      • 根据文件可用性、健康状况、与客户端的网络距离
    • 控制 OCAs 的填充行为
      • 根据算法预测用户行为,利用非峰值带宽更新 OCAs 上的视频
        • 受欢迎的视频可以有更多的副本

视频播放的整体流程

  1. OCAs 定期汇报健康状态、路由、文件可用性等信息给 AWS 上的 Cache Control Service
  2. 用户在客户端设备上通过 Netflix 应用程序请求播放电视节目或电影
  3. Playback Apps 会检查用户授权和许可证,然后根据客户端特征和当前网络条件确定选择合适的文件来播放
    • 应该指的是选择一个合适的分辨率或格式下的视频文件来播放
  4. Steering Service 使用由 CCS 存储的信息来选择应该让哪个 OCA 提供请求的文件,生成相应的 URL 并将其交给 Playback Apps
  5. Playback Apps 将适当的 OCA 的 URL 交给客户端设备,由 OCA 提供请求的文件
    • Playback Apps 会返回一组 URL,由客户端来选择连接哪个 URL,网络质量下降时,客户端可能会切换到其他 OCA 上去

其中 Playback Apps、Steering Service、Cache Control Service 都部署在 AWS 上

视频播放的整体流程

media pipeline

工作室发给 Netflix 的原始视频,这些视频一般是高清格式的

  • Netflix 首先会检查这些源视频
    • 检查是否存在失真或伪影的问题,是否符合规范,如果存在问题就要求重新交付
    • 同时生成编码管道所需的元数据
    • 源视频首选格式为 IMF,也支持 ProRes、DPX 和 MPEG
  • 在 EC2 服务器上执行转码(transcoding),生成不同分辨率和格式的视频以支持各种不同的播放设备
    • 由于源视频可能会非常大,管道会将它分块放到不同实例上并行处理,所有块的编码都结束后再组装到一起
  • 转码后输出的视频会被发送到 Open Connect 里

参考资料

标签:视频,架构,Netflix,网站,CDN,Connect,OCAs,Open
From: https://www.cnblogs.com/ljx-null/p/17419453.html

相关文章

  • WinServer2008下IIS8如何给网站配置域名/IP来访问
    Windows2008下IIS7主机头如何配置,IIS7主机头编辑绑定设置Windows2008r2搭建网站服务器,对于IIS6如何添加主机头,小编之前介绍了方法。下面本经验演示一下IIS7怎么添加主机头,如何配置网站添加主机头设置1.主机头查看,在“开始---运行”中输入inetmgr命令之后,点击“确定”按钮即......
  • Intel公布全新架构x86S!纯64位模式运行:指令集大幅精简
    在iOS生态中,苹果已经完全淘汰了32位,安卓领域也在加速,设计APP、操作系统、处理器等多方面。而对于PC电脑而言,Intel似乎要“大动干戈”了。Intel已经提出一种全新架构名为x86S,即x86-64ISA简化版,其独特的地方在于纯64bit模式运行的设计。当然,别担心,在技术白皮书中,Intel表示,纯64......
  • 网站监测软件配置使用 - WGCLOUD
    WGCLOUD是一款优秀的开源运维监控工具,它可以监控网站、网页、服务接口的健康状态,并支持GET和POST接口,以及对返回的内容进行校验,支持告警通知,比如邮件、钉钉、微信等,这样可以有效防止我们的网站被篡改WGCLOUD很轻量,部署很方便,本文中我们不讲述如何部署安装了,可以去网站(www.wgstart.c......
  • 5年Python生涯总结出10个玩Python必备的网站
    “玩Python必备的10大精品网站”5年Python沉淀,总结一下作为一个Python玩家,必须要知道的十大精品网站。无用请吐槽!有用请点赞!!爱我请三连!!!目录一、模块查询二、闯关游戏三、Django教程四、Python资源大全五、数据/竞赛/学习六、Python语法/项目经验七、Flask资料大全八、机器学习中文......
  • 发现三个很赞的英语学习网站
    阅读文本大概需要2分钟。很多读者都知道我有在学英语,对英语蠢蠢欲动的同学,纷纷给我留言,问我是怎么学习的?有什么学习渠道、学习技巧之类的么?哪有啊,我也就是随意瞎学,没有任何技巧而言,我总觉得学习哪有那么多所谓的学习技巧、学习捷径,就按部就班默默的坚持就好了。但是虽说没什么学......
  • 推荐一些非常有用的学习网站
    昨天的文章很多人表示很受用,同时有人留言让我推荐一些学习渠道啥的,马上双11,姑且忙中偷闲送波福利给你们,今天就给你们推荐一些绝对有用的学习网站。1.free-programming-books这个就不多说了,之前有推荐过的,免费的计算机编程类书籍,很多很全,不过都是英文的,有英语阅读习惯的人强烈推......
  • 安居客 Android 项目架构演进
    阅读本文大概需要6.66分钟。导读:这篇文章是我的一位好友,现担任安居客AndroidTeamLeader的张磊所写,记录了安居客Android端这几年来的架构迁移与变化,非常值得看,也很有借鉴意义,所以这里推荐给大家,并已获独家授权发布,感兴趣的可以在文末关注作者的GitHub与知乎专栏。入职安居......
  • ExtJS应用架构设计(三)
    原文:http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-3/?mkt_tok=3RkMMJWWfF9wsRonuKrLZKXonjHpfsX56uolXaS2lMI%2F0ER3fOvrPUfGjI4AT8t0dvycMRAVFZl5nR9dFOOdfQ%3D%3D      在该系列文章的前两篇文章中(一、二),我们探讨了如何使用ExtJS4的新特性构建一......
  • ExtJS应用架构设计(二)
    原文:http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2/      在《ExtJS应用架构设计》一文,我们探讨了如何使用ExtJS构建一个潘多拉风格的应用程序。我们采用了MVC架构,并将它应用到一个比较复杂的用户界面,应用中带有多个视图和模型。在这篇文章中,我......
  • 云原生微服务(1):后台基础架构发展史
    ​后台技术架构发展史:总体上经历了单体应用,分布式系统时代,和云原生时代的发展演进过程。1.单体应用:这种架构通常是基于传统的三层结构(表示层、业务逻辑层和数据访问层),并使用关系型数据库进行数据存储和管理。单体应用的性能和可扩展性开始受到限制。2.垂直架构:服务器负载很高的......