摘要:本文簡單介紹了Netflix公司利用其内部的spot市場節省了92%的視訊編碼成本。以下是譯文。

這個想法很簡單:
Netflix使用了三個AWS region,包括數十萬個EC2執行個體,但很多執行個體在一天的不同時間段裡并沒有得到充分的利用。
視訊編碼占到Netflix計算需求的70%,運作在超過1000個不同的自動縮放組中的30多萬個CPU上。
那麼為什麼不把那些未充分利用的保留執行個體集中起來建立Spot市場來進行視訊的編碼處理呢?
Spot執行個體允許你使用未充分利用起來的EC2執行個體,進而顯著降低Amazon EC2的使用成本。Spot執行個體的小時價格由Amazon EC2設定,并根據Spot執行個體的使用時間長短和需求進行調整。Spot執行個體在系統容量可用并且你請求的每小時最高價格超過Spot價格才能運作。
AWS在任何時候都有很多未充分利用起來的執行個體,Netflix也是如此。要了解為什麼建立内部Spot市場對Netflix的幫助如此之大,我們首先要了解他們是如何對視訊進行編碼的。
戴夫解釋了視訊編碼的過程:
Netflix從制作公司和工作室擷取視訊。Netflix首先對源檔案進行驗證、查找丢失的幀、數字防僞、顔色變化以及其他問題。如果在這過程中發現問題,則視訊将被拒絕。
視訊檔案超級大,有幾兆兆位元組的大小。處理單個TB大小的視訊檔案是不合理的,是以,需要将視訊分解成多個塊,進而可以并行操作。
塊通過媒體管道進行傳遞,在這過程中有很多編碼工作要做。 Netflix支援2200個裝置和多種不同的編解碼器,是以,視訊需要是指定的幾種檔案格式。
塊編碼完成後,需要再次進行驗證,以確定沒有引入新的問題。然後,塊被組裝成一個檔案,并再次驗證。
媒體管道中涉及超過70種不同的軟體。
Netflix認為靜态編碼比動态編碼能産生更高品質的視訊觀看體驗,但同時也會産生很多的檔案。
《怪奇物語(Stranger Things)》第二季以8K分辨率進行拍攝,有九集。源檔案有百萬兆大小。每一季需要19萬CPU小時進行編碼。這相當于2965個m4.16xlarge執行個體運作一個小時。靜态編碼過程會建立9570個不同的視訊、音頻和文本檔案。
那麼,你如何對視訊進行編碼呢?有兩種方法。
最容易想到的方法是設定一個隻為媒體編碼服務的靜态執行個體場。這種方法的優點是你總能擷取到所需的資源。
但是你想一下,編碼是一個突發的重負載的工作,這意味着場在很多時候都無法得到充分的利用。
一旦你想到這一點,利用Spot市場的想法定會油然而生。
AWS已經有一個Spot市場了,為什麼不使用它呢?為什麼要從自己的保留執行個體中建構自己的Spot市場?
Netflix有着基準容量非常龐大的保留執行個體。他們每天從這個池中自動擴充和回收一萬多個執行個體。當Netflix池自動縮小時,就出現了未使用的容量。未使用的容量是對金錢的浪費,而Spot市場則是充分利用起所有未使用容量的好方法。
是以,Netflix做了一件非常天才的事情,他們建立了自己的内部Spot市場來處理塊的編碼工作。工程工具團隊建構了一個API,以分鐘級實時顯示未使用的容量。
使用内部Spot市場與靜态編碼場能節省的成本有多少呢? 92%!
跟亞馬遜一樣,Netflix也建立了自己的内部Spot市場。雲計算經濟就是為了提高機器的使用率。AWS中的預留執行個體可以幫助節省大量的資金,從這些執行個體中盡可能地擷取最大價值是非常有意義的。CPU如果有一微秒不在工作就是在浪費金錢。
我樂衷于建立一個二級市場,以便讓開發者們可以轉售他們執行個體中未使用的容量。虛拟機的使用率仍然非常低。有很多未使用的CPU、網絡和記憶體的執行個體。是以,這似乎是一個不錯的主意。這是一個雲中雲。
它真正的優勢是安全性。誰會在一台沒有安全保證的機器上儲存資料和運作代碼呢?雖然我已經在FreeBSD上使用過Jails,但當初容器這個概念我還從來沒有聽說過。
我認為GAE會将執行個體映像這個概念完全抛棄,而将應用程式寫入倒一個巨大的任務隊列容器中。
但問題是,任務隊列仍然是基于映像的。具體的操作通過URL來指定,并且在運作時執行個體中終止。映像包含了應用程式執行的所有代碼,它是一個整體。
當某個Web用戶端的URL被調用時,它将在單個映像中執行代碼。這些大型映像必須由GAE來管理,這也是為什麼Google需要向你收取更多費用的原因。他們需要一定的資源對其進行管理,需要有一定的時間進行初始化,而且即使應用程式沒有做任何事情,運作的時候也需要記憶體。
有人會問,為什麼不能在一個任務隊列工作項目中終止請求呢?那是因為異步編碼模型存在的問題會導緻這個單一的映像可能會被丢棄。是的,GAE仍然需要以某種奇異的方式來管理和配置設定這些代碼庫,這并不是一個簡單的任務。這能解決資源粒度問題的比對工作,不過他們反過來解決了另一個方向,即以映像作為配置設定機關,以執行個體作為執行機關。接下來我們将詳細讨論顆粒度問題。
是以,随着這個超酷的任務隊列架構和程式設計模型的出現,我認為他們已經準備好宣布單一映像将會消失,執行個體将會消失,并且你使用計費模型作為替代品的代價将會更高。但是,我錯了,再一次錯了。
原文文章由博悅平台發 http://www.hongshulin001.com 原創釋出 轉載請注明出處