Netflix是如何利用内部Spot市场来节约成本的

简介: 摘要:本文简单介绍了Netflix公司利用其内部的spot市场节省了92%的视频编码成本。以下是译文。   Netflix利用其内部的spot市场节省了92%的视频编码成本。戴夫·哈恩在他《Netflix工程师生活中的一天》中讲述了这是如何做到的。

摘要:本文简单介绍了Netflix公司利用其内部的spot市场节省了92%的视频编码成本。以下是译文。


1.jpg 

Netflix利用其内部的spot市场节省了92%的视频编码成本。戴夫·哈恩在他《Netflix工程师生活中的一天》中讲述了这是如何做到的。 Netflix在2015年发表的两篇文章中谈到他们的spot市场:创建你自己的EC2 spot市场的第一部分第二部分

这个想法很简单:

  • Netflix使用了三个AWS region,包括数十万个EC2实例,但很多实例在一天的不同时间段里并没有得到充分的利用。

  • 视频编码占到Netflix计算需求的70%,运行在超过1000个不同的自动缩放组中的30多万个CPU上。

  • 那么为什么不把那些未充分利用的保留实例集中起来创建Spot市场来进行视频的编码处理呢?

在回答这个问题之前,我们首先来定义一下什么是Spot市场

Spot实例允许你使用未充分利用起来的EC2实例,从而显著降低Amazon EC2的使用成本。Spot实例的小时价格由Amazon EC2设置,并根据Spot实例的使用时间长短和需求进行调整。Spot实例在系统容量可用并且你请求的每小时最高价格超过Spot价格才能运行。

AWS在任何时候都有很多未充分利用起来的实例,Netflix也是如此。要理解为什么建立内部Spot市场对Netflix的帮助如此之大,我们首先要了解他们是如何对视频进行编码的。

Netflix如何对视频进行编码

戴夫解释了视频编码的过程:


2.jpg 

  • Netflix从制作公司和工作室获取视频。Netflix首先对源文件进行验证、查找丢失的帧、数字防伪、颜色变化以及其他问题。如果在这过程中发现问题,则视频将被拒绝。

  • 视频文件超级大,有几兆兆字节的大小。处理单个TB大小的视频文件是不合理的,因此,需要将视频分解成多个块,从而可以并行操作。

  • 块通过媒体管道进行传递,在这过程中有很多编码工作要做。 Netflix支持2200个设备和多种不同的编解码器,因此,视频需要是指定的几种文件格式。

  • 块编码完成后,需要再次进行验证,以确保没有引入新的问题。然后,块被组装成一个文件,并再次验证。

  • 媒体管道中涉及超过70种不同的软件。

Netflix认为静态编码比动态编码能产生更高质量的视频观看体验,但同时也会产生很多的文件。

《怪奇物语(Stranger Things)》第二季以8K分辨率进行拍摄,有九集。源文件有百万兆大小。每一季需要19万CPU小时进行编码。这相当于2965个m4.16xlarge实例运行一个小时。静态编码过程会创建9570个不同的视频、音频和文本文件。

那么,你如何对视频进行编码呢?有两种方法。

最容易想到的方法是设置一个只为媒体编码服务的静态实例场。这种方法的优点是你总能获取到所需的资源。

但是你想一下,编码是一个突发的重负载的工作,这意味着场在很多时候都无法得到充分的利用。


3.jpg 

一旦你想到这一点,利用Spot市场的想法定会油然而生。

AWS已经有一个Spot市场了,为什么不使用它呢?为什么要从自己的保留实例中构建自己的Spot市场?

Netflix有着基准容量非常庞大的保留实例。他们每天从这个池中自动扩展和回收一万多个实例。当Netflix池自动缩小时,就出现了未使用的容量。未使用的容量是对金钱的浪费,而Spot市场则是充分利用起所有未使用容量的好方法。

所以,Netflix做了一件非常天才的事情,他们建立了自己的内部Spot市场来处理块的编码工作。工程工具团队构建了一个API,以分钟级实时显示未使用的容量。

使用内部Spot市场与静态编码场能节省的成本有多少呢? 92%!

一切都跟经济有关

跟亚马逊一样,Netflix也创建了自己的内部Spot市场。云计算经济就是为了提高机器的利用率。AWS中的预留实例可以帮助节省大量的资金,从这些实例中尽可能地获取最大价值是非常有意义的。CPU如果有一微秒不在工作就是在浪费金钱。

在过去,在AWS成为基础设施的吞噬者之前,我跟其他许多人一样,都在拼命思索AWS的创业想法。《构建超级可伸缩系统:Blade Runner满足环境云中的自主计算》一文中描述的内容正是当初我所追求的一些想法。

我乐衷于创建一个二级市场,以便让开发者们可以转售他们实例中未使用的容量。虚拟机的利用率仍然非常低。有很多未使用的CPU、网络和内存的实例。所以,这似乎是一个不错的主意。这是一个云中云。

它真正的优势是安全性。谁会在一台没有安全保证的机器上保存数据和运行代码呢?虽然我已经在FreeBSD上使用过Jails,但当初容器这个概念我还从来没有听说过。

我的想法跟lambda一样,这就是为什么在《Google App Engine的调价对Web架构的将来预示着什么》一文中我对GAE转向更高粒度的系统感到失望的原因:

我认为GAE会将实例映像这个概念完全抛弃,而将应用程序写入倒一个巨大的任务队列容器中。

这个设想或者说愿景的基础是GAE最具创新性和深远影响力的发展和演变,即:任务队列。这是一个非常不错的功能,它可以将应用程序分解为异步流程。任务会被放到队列中,并在稍后的某个时间点执行。与GAE最初使用的整体和同步模型不同,现在的应用程序可以是完全异步的,并能在任何一台机器上运行。

但问题是,任务队列仍然是基于映像的。具体的操作通过URL来指定,并且在运行时实例中终止。映像包含了应用程序执行的所有代码,它是一个整体。

当某个Web客户端的URL被调用时,它将在单个映像中执行代码。这些大型映像必须由GAE来管理,这也是为什么Google需要向你收取更多费用的原因。他们需要一定的资源对其进行管理,需要有一定的时间进行初始化,而且即使应用程序没有做任何事情,运行的时候也需要内存。

有人会问,为什么不能在一个任务队列工作项目中终止请求呢?那是因为异步编码模型存在的问题会导致这个单一的映像可能会被丢弃。是的,GAE仍然需要以某种奇异的方式来管理和分配这些代码库,这并不是一个简单的任务。这能解决资源粒度问题的匹配工作,不过他们反过来解决了另一个方向,即以映像作为分配单位,以实例作为执行单位。接下来我们将详细讨论颗粒度问题。

所以,随着这个超酷的任务队列框架和编程模型的出现,我认为他们已经准备好宣布单一映像将会消失,实例将会消失,并且你使用计费模型作为替代品的代价将会更高。但是,我错了,再一次错了。

  原文文章由博悦平台发 http://www.hongshulin001.com 原创发布 转载请注明出处

目录
相关文章
|
11月前
|
Cloud Native 前端开发 Serverless
《2023云原生实战案例集》——04 互联网——Wolai 使用函数计算相比传统架构节省了一半以上的费用和人力
《2023云原生实战案例集》——04 互联网——Wolai 使用函数计算相比传统架构节省了一半以上的费用和人力
|
监控 小程序 安全
产品人如何用更少的成本推动业务高速增长?
产品经理应聚焦四大阶段:市场、测试、体验和业务表现,还应借助第三方数据统计SDK,如友盟+U-App快速集成采集数据,节省采集成本高。另一个是解决标准问题,同时拥有标准化统计逻辑,可以有效解决指标不统一的问题,并分析流量来源、行为分析、留存及漏斗,以及整个分析过程。
产品人如何用更少的成本推动业务高速增长?
|
传感器 机器学习/深度学习 运维
使用物联网降低维护成本的四种策略
维护良好的建筑物有助于提高组织的生产力,确保必要设备的持续性能,并通过确保运营效率来增加收入。但是,建筑物的运维成本不断增加,这使得平衡设施维护成本与建筑物需求成为一项持续的挑战。传统的成本节省策略曾经产生过可观的效果,但如今,这些方法已经不再适用。
软件项目成本估算之NESMA方法的3种应用场景
在五种国际标准中,只有NESMA方法定义了3种应用场景以支持不同粒度的估算,并且随着项目的进展和需求的完善,估算者可以不断修正之前的结果,进行持续的软件度量。因此如果使用行业标准进行早期估算(如编制预算、招投标),则应采用NESMA方法中的预估功能点或估算功能点方法。
1832 0
|
存储 数据安全/隐私保护 数据中心

热门文章

最新文章