Netflix 最后一公里内容交付

宅时光之追剧背后的技术思考

Posted by 薛以致用 on February 15, 2020

申明

本站点所有文章,仅代表个人想法,不代表任何公司立场,所有数据都来自公开资料

转载请注明出处

公司通知再在家宅 14天,这样下去很快就暴露了,原来大家都不去公司,也没什么大不了的,会不会以后,为了节约成本,固定工位可以全部取消了,变化来的猝不及防~~

宅在家里,连朋友圈都刷的没力气了,受团队文化人影响,赶紧抓点时间丰富下自己,各种记录片和 Kindle 未读完的书,绝对是宅友必备,感谢奈非,《纸牌屋》、《毒枭》、《女子监狱》、《少年嘻哈梦》等各种网红原创剧,让我们宅在家里的无聊时光多了一个选择;

年前听费老师嗨聊,才发现费老师是一个技术控+资深 Netflix 用户,关于 Netflix 的技术,我一直关注在 AWS 的平台层面比较多,经老师提示,原来,Netflix 为了满足全球用户的最后一公里内容交付的难题,居然抛弃了当时热门的第三方 CDN服务,下定决心自建一套,高效经济的取悦 Netflix 最终用户,本文我们就来扒一拔下奈非自家自建自用的内容分发网络 - Open Connect 解决方案。

流媒体互联网流量之殇

据公开数据奈非目前服务全球 190个国家 1.58亿付费会员,仅视频流媒体消费就占全球互联网流量的 12% 左右,2011年奈非高峰时吃掉了全美 32% 互联网下行流量,互联网是一个公共基础设施,而高清视频,直播,短视频,VR,在线教育的发展加剧了互联网带宽的竞争,最重要的是,如何在日益拥挤的互联网,保障和提升最终用户的娱乐体验?同时降低带宽的消耗也是降低成本的重要方面;对标国内的爱奇艺,2017年在带宽的就烧掉了21.9亿元(招股书说明)。

因此一个智能内容分发网络对流媒体服务商来说,非常重要,奈非初期采用的是多 CDN的策略,使用包括 Akamai、Limelight 和 Level3 作为视频内容分发,随着业务的全球扩展,奈非在 2011年,做了一个重要决定:自建适合自己的 CDN 网络,到 2016年3月,奈非的 VP Ken Florance发文透露,100% 的视频流是通过 Open Connect 网络交付给最终客户,奈非团队当时考虑自建原因有几点:

  • 奈非的流媒体服务成长成为互联网流量重量级消费方,直接或间接和全球互联网服务提供商(Internet Service Provider)合作对于奈非来说非常重要
  • 相对于第三方标准的 CDN 服务来说,按需按内容访问热度来决策,定制化方案可以帮助奈非设计一个更高效智能的内容缓存算法,减少整体的互联网带宽消耗
  • 节约成本,第三方 CDN 相对来说不够经济,同时奈非只是专注流媒体服务,相对通用的第三方 CDN 技术更加聚焦和简化

第三方到自建cdn

如下图所示,全球部署奈非的边缘服务器的节点(通常是 ISP)有超过 1000个,部署超 10000个边缘服务器,包括中国香港等东南亚地区,奈非通过:

  1. (橙色圈圈)在全球的互联网交换机中心 (Internet Exchange Point) 安装定制的 Open Connect服务器,并和多个 ISP 网络进行对等互联(peering),优化客户接入到边缘设备的网络延迟
  2. (红色圈圈)免费提供设备给到认证的接入商(ISP),构建一个开放合作的生态

OpenConnect Global Pops

Netflix 的流媒体是如何工作的?

How Netflix works?

如上图所示,客户访问终端设备有很多种类型,比如移动设备,PC端,智能电视机,机顶盒等等,奈非目前所有的应用服务都是部署在 AWS 上,OpenConnect 边缘设备上只负责存储编码后的视频等内容,并通过 HTTPS 提供用户终端流媒体点播服务,OpenConnect 边缘设备必须要跟 AWS 能够通信,定期上报设备健康状态,本地存储的内容元数据,以及 BGP 路由信息等等;用户除了播放视频由 OpenConnect 设备提供服务,其他服务都是直接访问 AWS 侧的各种应用服务,比如会员,视频元数据服务,客服,搜索,个性化,收藏,打分,包括点击播放返回哪个边缘设备的地址都是由控制面即 AWS 侧的服务来处理。

OpenConnect 如何工作?

How OpenConnect works?

从以上的官方说明图中,我们可以看出,用户终端首先跟控制面也就是部署在 AWS 服务交互,提交播放请求,控制面服务会识别用户,判断用户是否有授权,并根据用户的最优访问路径结合 OCA 分布信息,选择一组 OCA 边缘设备,并将生成的视频播放地址返回给客户,终端通过该地址,直接请求 OCA 设备观看视频内容。

OCA-自研边缘缓存服务器

OCA 的全称是 Open Connect Appliance,基于 X86架构,FreeBSD 操作系统,NGINX Web服务器,单机的网络吞吐从 2012年 8 Gbps 提升到 2016年 90 Gbps,技术团队继续打造基于 TLS 单机 100 Gbps的处理能力,以及更绿色节能的能源消耗。

OCA 主要有两种不同的型号,同时多个 OCA 服务器可以组成一个集群,通常在同样一个节点服务同样一组最终用户的OCA服务器可以组成一个或多个集群:

  • Storage 类型:2U 或 4U 设备,100TB/120TB/160TB,最大 200TB HDD 存储
  • Flash 类型:定制的 1U 设备,存储采用 SSD,14TB MLC SSD,256GB 内存

OCA 服务器一直被优化,高效读取大型视频语音文件,为了满足多用户同时观看同一部热剧的诉求,同样一个视频内容在 OCA 集群中会存放多份;

OCA-open connect appliance

在哪里安装 OCA 服务器?

奈非建设 Open Connect CDN 网络跟 AWS 的 Cloudfront 不一样的地方在于,亚马逊 AWS 的全球网络是基于自建的骨干网,建设标准和复杂度很高,而奈非不自己运营自己的网络,也同时不自己运营数据中心,那 OCA 服务器通常安装在什么地方呢?

一个是直接安装在全球 IXP 即互联网交换机中心机房或非常靠近的位置,这些都是第三方数据中心,但 IXP 遍布全球,同时它的设计初衷就是互联网流量在不同网络的数据交换,类似现实高速公路的立交汇聚点;

另外一个方式,就是免费提供 OCA 设备给到当地的网络接入商(ISP),每个用户接入互联网都需要通过本地的 ISP实现,比如国内上海电信、上海移动等,天然他们的数据中心更靠近最终用户。

如果 ISP 有大量用户需要访问奈非,OCA 部署到 ISP 机房是一个很好的选择,对于安装在网络服务接入商(ISP)的 OCA 服务器提供服务需要满足:

  1. 每个国家可以观看的视频内容总量不一样,带宽峰值要求不一样,北美和欧洲通常要求 5Gbps 以上,其他国家一般 1Gbps 以上
  2. 要求保障 1.2 Gbps 入站流量,连续在网络使用低峰 12个小时的时间,用于奈非通过算法推送内容
  3. 单个设备需要预留 2-4个 10 Gbps以太网端口或1 x 100 Gbps 口
  4. 最好跟某个就近的奈非的 PoP 点做对等连接

安装 OCA 服务器对 ISP 有什么好处?

那我们就要从最终用户的角度看看,如果在你的 ISP 服务商网络里面没有 OCA 服务器,但你又是一个奈非的订阅用户,会出现什么情况?

你打开奈非 App,浏览和点击一个电影,该请求需要发送到奈非在 AWS 部署的会员服务以及内容控制面服务,这些服务都不在你所在的 ISP的网络中,因此,ISP 需要接入互联网才能满足用户的需求,当该请求消耗很少带宽的情况下,对 ISP服务商的互联网通道不会构成压力,但如果视频流的播放下载也是直接通过互联网访问 AWS 再经过 ISP 网络到达用户侧的话,当 ISP 用户的奈非订阅用户越来越多的情况下,ISP 需要花费很大的代价来扩充互联网的接入带宽,代价很大。

但如果 ISP 安装了奈非的 OCA 服务器,那么作为该 ISP 用户的你,播放奈非视频的时候,根本就没有访问互联网,而是访问的该 ISP 网络而已;

因此对于海外的国民级视频应用,ISP 和 奈非的合作就是一个双赢的解决方案。

Why ISP needs OCA?

OCA 和第三方 CDN 边缘节点有什么差异?

OCA 设备本身不是一个活动网络设备,也不会尝试检查和拦截所在网络的流量请求,通常的 CDN 边缘站点通过透明代理或者反向代理技术来按需回源下载并缓存数据,而 OCA 只接受指定的用户视频流请求:

  1. OCA 上只会存放奈非的语音视频文件
  2. OCA 的性能和维护只会影响该 ISP 用户中奈非的订阅者
  3. OCA 不会在用户点击播放请求的时刻来向视频源站请求下载数据
  4. 哪些用户可以访问 OCA 设备,是由 ISP 和 Netflix 来控制,而跟设备本身无关;ISP 通过 BGP 宣告路由的方式,控制哪些用户可以访问 OCA 服务器,当 ISP 更新路由之后,奈非会在分钟级别同步到这些信息;奈非的Open Connect 控制面服务(OCP)将用户请求指向该区域的 OCA 设备,必须满足两个前提:
  5. 请求的内容已经在 OCA 设备上
  6. 该设备的容量和状态比较健康,足够来处理新的请求
  7. 100% 边缘缓存命中;因为奈非知道要将客户想要的内容都缓存到就近的边缘节点中,而第三方 CDN 厂商不会这样帮你做;

Tier Edge

视频内容如何下发?

首先要考虑的是什么时间来填充和更新边缘 OCA 服务器的视频内容?通常时间窗口是当地的凌晨,对应不同的 OCA 设备类型,略有不同:

  • Storage 类型:时间窗口 12个小时,当地时间,从凌晨2点到下午2点;最大的速率不超过 1.2 Gbps,总下载量不超过 6.5 TB
  • Flash 类型:总计 3个小时,可以是凌晨 3点~6点,或者下午 3点~6点,最大的速率不超过 1.2 Gbps,总下载量不超过 1.5 TB;

源站内容如何下发到边缘侧 OCA 设备上呢?奈非采取的是“主动缓存”策略,即在更新时间窗口,每天下发或更新设备上的内容,同时会考虑设备或者网络维护的情况。

每台 OCA 设备上由于空间有限无法保持所在国家或地区的所有可观看内容,在一个内容下发时间窗口内,最大的下载内容量不能超过 7.5TB,同时,内容下发的策略主要有:

  • P2P:设备之间互相复制更新,比如同一个集群的 OCA服务器,或者配置在一个子网的 OCA 服务器之间;Flash 类型的 OCA 设备优先从 Storage 类型的 OCA 设备同步内容,另外,当 Flash OCA 在填充内容时,是无法对外提供播放服务的;
  • 多级缓存,就近最优原则:所有的视频源内容都放在 AWS 对象存储 S3上,首先会下发到奈非的大型 PoP 点(Storage OCA设备集群),其他站点(OCA以站点为基本单位安装),首先会从该更新后的内容缓存站进行复制更新,如果该站点还通过 BGP feed 可以访问其他站点,那么备选同步方法就是从另外一个 ISP 站点同步更新;

最理想的情况就是,预先把你想要的内容,同步到离你最近的地方(OCA设备上);奈非的算法团队会通过用户的历史行为以及内容热门程度,预测哪些内容你会在什么时间观看,以便于指导内容应该复制到哪些 OCA,复制多少份。

预测算法是基于每部影片来计算的,在某个地区或国家,越热门的影片,复制的 OCA 设备就会越多,因为观看的人多,多并发请求越高,同时要求的 OCA 服务资源就越多;只复制到一个 OCA 设备的一部影片不能算“上线”,只有足够多的 OCA 边缘节点更新到该影片的副本,奈非的会员才能观看该影片。

Proactive Cache?

可靠性和自愈弹性

单台 OCA 从硬件上,电源和网络本身冗余高可用的,另外 OCA 与 OCA 之间互相独立,如果一台 OCA 挂掉了,不影响另外一台正在服务的 OCA 设备;

如果你看电影途中,连接的那台 OCA 故障了,奈非的客户端会立马切换到另外的 OCA 设备,并从观看的地方恢复流服务。从用户角度,如果你访问 OCA 的网络过载或者 OCA 过载,奈非的内容控制面服务都会重新路由到一个新的 OCA节点。

总结

Open Connect 是奈非自己构建的单租户 CDN 全球网络,与其他第三方通用 CDN 网络不一样的地方在于,边缘节点的内容命中率是 100%,因为 ISP 和 Netflix 控制着用户访问哪个 OCA 节点设备,并且 Netflix 通过数据了解他的用户行为,可以预测用户在什么地点,什么时间,会点播哪些内容,因此将用户想要的内容主动缓存到离客户最近的地方;每天,在互联网非高峰时间,Netflix 会将更新的内容分发到全球各地;Netflix 自身不运营数据中心和骨干网,Open Connect 网络和第三方 IXP 或 ISP 合作,所有的应用后台都部署在 AWS 云上。

参考资料:


公众号二维码

诞生于 2019,遇见 2020。

感谢关注,欢迎动动手指标星和置顶;

这样就不会错过少但精彩的技术探讨、团队建设、案例分享!

每周至少一更,转发是对我的最大鼓励!

学习之路漫漫,走走停停,
偶有所感,随心所记,
言由心声,问心无愧!

从客户中来,到客户中去!