爲什麼 Netflix “永不宕機”?
整理|核子可樂、燕珊
如果運氣好,Netflix 的方案可能最終會成爲行業標準。
上個月,Netflix 出品的《魷魚遊戲》劇集再次引爆全球無數觀衆。雖然“身經百戰”的觀衆早已對這類大逃殺題材的作品建立起充分的心理預期,但 Netflix 憑藉着對反烏托邦題材的極致挖掘再次證明,他們有決心打造一出迄今爲止最成功的原創劇集,同時也向其他競爭對手證明自己的業務高度已然遙不可及。
與此同時,很多同類流媒體平臺還深陷老大難問題而無法自拔:視頻卡頓、控件失效或者服務崩潰等等。而 Netflix 卻鮮少出現問題,這離不開其優秀的基礎設施建設。近日,《The Verge》撰文談 Netflix 龐大的服務器網絡 Open Connect,其指出,正是這個不被太多人在意的技術細節,從根本上解決了大部分現代流媒體面臨的共同難題。
Open Connect 的奧秘
過去十多年來,Netflix 流媒體服務出現過多少次技術問題?不能說沒有,但肯定屈指可數。服務的核心,也就是應用程序底層的工程方案,纔是決定一切流媒體成功與否的關鍵。
Netflix 用了十年時間搭建起一套名爲Open Connect的服務器網絡。Netflix 公司 Open Connect 副總裁 Gina Haspilaire 表示,當初之所以要構建 Open Connect,是因爲 Netflix“清醒地意識到,我們需要構建一定水平的基礎設施技術才能維持起我們想要獲得的預期流量。我們覺得自己能成功,也知道當時的互聯網還支撐不起預期中的全球流量規模。”
沒人能在應用程序不斷崩潰、視頻老在緩衝的情況下堅持看完一部電影。Netflix 對這個問題很有先見之明,他們知道要想保持穩定的質量水平,首先需要建立自己的內容分發系統。
Open Connect 是 Netflix 的內容交付網絡,專門用於向全球用戶分發電視節目與電影。項目始於 2012 年,包括由 Netflix 向互聯網服務商提供物理設備,藉此實現媒體流量本地化。這些設備存儲着 Netflix 的內容副本,負責減少內容在抵達播放用戶之前需要經過的通道數量,藉此減輕網絡壓力。
大多數主要流媒體服務都依賴於第三方內容交付網絡(即 CDN)實現視頻傳遞,正是這種通行實踐讓 Netflix 的自有服務器網絡變得鶴立雞羣。如果沒有像 Open Connect 這樣的系統或者其他第三方 CDN,互聯網服務商所請求的內容必須“通過一個對等點、再經由四到五個其他網絡,才能抵達數據源頭或者內容存儲位置。”內容交付網絡廠商 Akamai 媒體工程首席架構師 Will Law 強調,這不僅會拖慢內容交付速度,而且考慮到互聯網服務商可能需要付費才能完成內容訪問,所以整個實現成本也更爲高昂。
爲了迴避流量和成本問題,Netflix 會提前將內容副本發送至自有服務器,從而防止 Netflix 流量在流媒體峰值時段被播放端網絡所阻塞。
“我們的 Open Connect 會在離用戶互聯網服務商最近的位置部署一份 Bridgerton 副本——有時候甚至會直接部署在互聯網服務商的網絡之內。這就基本避免了互聯網服務商先通過網絡對接服務器、再把提取到的內容傳輸給用戶的過程。”Gina Haspilaire 說道。
而且,Netflix 的服務器幾乎無處不在。目前,Netflix 表示已經在 158 個國家 / 地區部署有 17000 臺服務器,而且未來還計劃進一步擴展其內容交付網絡。根據介紹,Netflix 會根據哪些位置周邊的用戶更多、哪些區域的互聯網服務器商合作門檻更低對服務器部署做出優先級排序。
Law 解釋道,“爲了提高性能,流媒體服務商紛紛將服務器儘可能靠近最終用戶,再由這些服務器提供最後一英里區域內的網絡內容。這就避免了把所有內容請求都返回源頭,再將內容經由互聯網整體傳遞的過程。這不僅減輕了互聯網的傳輸負擔,也緩解了對等點的承載強度。”
十年前 Open Connect 剛剛立項時,Netflix 也確定了與互聯網服務商全面合作的基本部署思路。Netflix 免費爲互聯網服務商提供服務器,再由內部可靠性團隊與這些服務商一道維護這些服務器設備。根據 Netflix 與 Akamai 的介紹,互聯網服務商也能從中受益,因爲就近獲取內容副本可以降低他們的網絡基礎設施運營成本。
Law 稱,“由此帶來的運營職責不算特別繁重,但卻帶來了令人釋懷的解脫。而且這些服務器的基本作用跟 Akamai 乃至其他 CDN 完全相同,唯一的區別就是它們只服務於 Netflix,屬於 Netflix 內容的專屬 CDN。”
包括 Akamai 在內大多數主要第三方 CDN 服務商都需要服務成千上萬客戶並應對企業提出的種種要求,而 Netflix 的內部 CDN 只着眼於一個目標:分發 Netflix 內容。Law 表示,爲了順利將電影或電視節目交付到每一位點播觀衆面前,內容分發商必須建立起這樣一套全面的 CDN 合作關係或者服務器網絡。
雖然 Netflix 沒有透露他們搭建並維護這些服務器的具體成本,但也提到自十年前立項以來,Open Connect 的總投資已經達到 10 億美元上下。他們還在不斷向 CDN 投入大量資金,繼續堅定推進這一以良好觀看體驗與用戶高參與度爲核心的 Netflix 業務戰略。很明顯,Netflix 的整個訂閱商業模式之所以成立,依靠的就是爲用戶提供符合預期的視頻流質量。
Netflix 還需要考慮到一個殘酷的現實:美國的互聯網基礎設施在本質上可謂支離破碎、頭尾難以相顧。
電子前沿基金會的 Katharine Trendacosta 在採訪中表示,“Netflix 之所以必須建立自有 CDN,是因爲美國的互聯網服務商實在垃圾得不行。他們很清楚,只要寄希望於互聯網服務商,就必然會有相當一部分用戶始終受到視頻緩衝或者低畫質圖像的折磨。”
爲什麼有效
Netflix 最關注的目標,就是無論互聯網服務商有多差勁、都能保證用戶享受到良好的內容觀看體驗。
爲此,Netflix 會在服務器上爲每部劇集或影片保留 3 個副本,這些副本的圖像質量各不相同。如果您的互聯網基礎設施不堪重負甚至暫時中斷,系統會導入碼率較低的版本,保證用戶始終有內容可看。
Haspilaire 解釋道,“我們會根據網絡質量調整內容,而不是根據內容調整網絡質量。正因爲如此,觀衆在觀看時感受不到網絡條件發生了哪些波動——流媒體內容一直在穩定呈現,而我們會隨時間推移隨時調整播放的版本……這樣即使短時間內斷開網絡又重新連入,用戶的屏幕上也不會出現緩衝提示。”
那麼,爲什麼是 3 個副本?Trendacosta 指出,美國本地的互聯網服務體驗毫無可靠性可言。設施宕機、WiFi 連接不良乃至其他網絡故障都有可能影響用戶的互聯網訪問能力,而 Netflix 則儘可能與互聯網服務商合作以解決大部分網絡傳輸問題。
Haspilaire 提到,Netflix 會在非峰值時段預先部署好影音內容,保證這部分傳輸任務不會跟其他流量競爭互聯網傳輸帶寬。至於部署的具體內容和位置,Netflix 會提前預測高人氣影片 / 劇集,並將數據相應發送至目標服務器。
Haspilaire 表示,“我們不只是把內容部署在世界各地的內容交付服務器上,同時也會根據預先做出的流行度預測設計部署方案。我們會預測哪些內容更受歡迎,並把影音儘可能部署在正確的服務器中。通過提前準備,我們的電影和劇集就能在黃金時段爲幾乎 100% 的觀衆提供本地副本,基本消除了由網絡服務中斷引發的糟糕觀感。”
之後,Netflix 會根據內容的受歡迎度在服務器上轉移視頻。Open Connect 擁有兩類服務器:閃存型(提供更快的交付速度)和存儲型(最多可容納 350 TB 數據)。如果存儲內容的人氣不斷提升,Netflix 就會把相應的副本轉移到閃存服務器當中。
Netflix 公司解釋道,“閃存服務器的基本定位就是支撐大部分流量服務,所以隨着某些節目或影片的需求量提升,我們的 OCA 服務器就會把內容從存儲型轉移到閃存型、保障觀衆獲得穩定的觀看體驗。”
新冠疫情的突然爆發,讓全球數億人窩在家中持續觀看流媒體內容。而這一突發狀況,也成爲 Netflix 這項十年規劃的收官之戰與立威之路。Haspilaire 表示,“這場疫情以一種我們不願看到的方式測試了 Netflix 基礎設施與技術體系。”而 Open Connect 頂住壓力,證明自己有能力幫助 Netflix 應對不斷增長的未來需求。
流媒體之王
Open Connect 是 Netflix 在疫情期間贏得良好市場表現的一大支柱,但 Netflix 力壓競爭對手靠的顯然不只這一招。Rayburn 也向《The Verge》列舉了 Netflix 視頻與音頻編碼項目的例子,強調雖然看起來 Netflix 當下已經建立起“巨大的優勢”,但作爲戰場中的後來者,他們還需要憑藉服務品質與服務態度去吸引和留存用戶。
Rayburn 指出,“每個人都承認,Netflix 建立起了一套能夠大規模穩定運行的系統,而這也是整個流媒體行業最不關注的方向。只有在規模化運營中始終提供良好、優質的消費者體驗,我們才能獲得如此龐大的訂閱者羣體。沒人擁有 Netflix 這樣的基礎設施規模,也沒人擁有同等程度的專業積累。”
至於 Netflix 爲什麼這麼成功,已經有不少人從各個角度進行剖析,其技術和企業文化也一直廣受好評。資深架構師、微服務技術專家楊波曾向我們總結了一些 Netflix 的厲害之處,其中有幾點尤其能體現 Netflix 在技術創新上的大膽和前沿。比如,在 2009 年左右, Netflix 就開始啓動上公有云戰略(雖然背後也是吃了自建數據中心的苦頭),應用逐步向 AWS 遷移,這個過程一共持續了將近 5 年,到 2015 年的時候遷移完畢。而現在回想,2009 年左右的 AWS 其實還不太成熟,別說當時,即使現在也沒有幾個大廠敢提全部遷移公有云的戰略。
又比如,Netflix 早在 2013 年就提出了 Cloud Native 理念,也就是現在常說的雲原生,而且它的整個平臺 (AWS IaaS + PaaS) 都是雲原生的。近年容器技術大火,大家都在談不可變基礎設施的理念,本質就是鏡像部署。Netflix 在 2012 年前就已經實現鏡像部署,發佈的單位是 AMI(Amazon Machine Image) 鏡像。
另一方面,開放開源也是 Netflix 的一種競爭戰略。在進行大規模生產級微服務架構實踐的同時, Netflix 也開源了整個微服務技術棧,比如現在大家耳熟能詳的 Zuul 網關、Eureka 服務發現註冊中心、Hystrix 熔斷限流、Archaius 配置等組件。對 Netflix 來說,開源有望能將自己的解決方案建立爲行業標準和最佳實踐。其次,開源亦可以幫助建立 Netflix 技術品牌,有利於僱傭、留住和吸引頂級工程師。第三,Netflix 可以從共享生態中獲得反饋輸入並受益。
隨着其服務體系的不斷擴張,也許終有一天各大老牌流媒體廠商反過來要從 Netflix 的基礎設施與自上而下的業務戰略中取經。甚至,Netflix 的方案可能最終會成爲行業標準。