视频大时代下基础架构的演进
點擊上方“LiveVideoStack”關注我們
過去十年,隨著端上算力和通訊能力的提升,我們見證了一個業務玩法日趨復雜、用戶覆蓋遍及全球的視頻大時代的誕生。近幾年,多個市值千億以上的泛視頻公司得到廣泛關注,其背后支撐業務高速迭代、承載核心技術的視頻基礎架構也慢慢浮出水面。視頻基礎架構包含哪些核心能力,在過去和現在經歷著怎樣的演進,對未來我們又該如何期許?在本次LiveVideoStackCon 2021音視頻技術大會 北京站,快手短視頻架構負責人黃琦結合多年來對行業的觀察與在快手的自身實踐,和大家一起探討視頻大時代下基礎架構的演進。
文?| 黃琦
整理 | LiveVideoStack
我是黃琦,來自快手音視頻技術部,擔任短視頻架構負責人。在加入快手之前,我曾在Facebook工作八年有余。2014年底,Facebook決定大力投入視頻時,我有幸作為第一個工程師參與組建視頻基礎架構團隊,并推動了視頻架構的持續演進。
基于我多年來的工作經驗與思考,本次分享將從視頻基礎架構、快手視頻架構演進案例以及未來展望三個板塊展開。
1. 視頻基礎架構
在快手,當談及怎么做視頻基礎架構,我們看到最多的是這樣一張圖。
圖1
上圖呈現了音視頻技術部為快手整體業務提供的多樣化能力:直播、短視頻以及RTC等。這些能力作為基礎架構的一部分,支撐了業務的高速迭代。但是,當細化到視頻基礎架構的實現路徑、核心目標時,圖1的表達還遠遠不夠。
圖2
首先,我們看視頻基礎架構的位置。在圖2中,它依賴于底層的基礎資源,IaaS層向其提供了存儲、計算和帶寬能力,與視頻基礎架構進行融合,再結合音視頻的獨特能力,為上層視頻業務提供平臺支撐。從云計算的術語來講,視頻基礎架構更像PaaS層。
其次,我們看視頻基礎架構的目標。在面向業務的過程中,首要目標是適應業務變化并進行架構優化,實現高速迭代。在不同迭代周期,業務面對的瓶頸不斷變化,我們需要調整架構來適配業務趨勢。架構的不斷調整,從而完成了不同能力的封裝。由于視頻基礎架構使用了龐大的資源,所以第二個目標便是精細化運營,極致降低視頻服務的成本。最后,由于視頻基礎架構依賴于底層基建的資源和能力,其本身的性能與成本瓶頸也受限于底層的技術水平,那么第三個目標便是不斷推動IaaS層進行迭代升級。總結來說,處于中間層的視頻基礎架構,需要承擔向上、內部以及向下三個目標,其核心邏輯是一致的,就是降本增效。
圖3
為什么在視頻基礎架構工作中,強調降本增效的重要性呢?
與圖文時代相比,視頻對資源的需求呈指數型增長,這意味著我們已經從輕工業進入到視頻重工業時代。下面分享一組快手的相關數據:音視頻領域工程師(包括基礎架構、業務等方向)1000人以上;視頻處理需要上百萬核的計算能力;快手累計視頻存儲消耗高達EB級;年消耗的視頻流量帶寬接近100TB。在圖文時代,這種量級的資源開銷是無法想象的;在視頻重工業時代,為了管理如此龐大的資源,要求我們有與之匹配的視頻基礎架構和高效的運行效率。
圖4
在后疫情時代,我們面對這樣一個新常態:視頻基礎設施體量仍在增加,但整體增速減緩。這個變化要求公司從跑馬圈地的狀態,轉變成關注資源整合和效率提升。快手視頻基礎架構團隊也同樣要完成這樣的使命:通過不斷提高人效與精細化管理資源,推動效率提升。
圖5
2. 快手視頻架構演進案例
下面我將結合快手的案例,從整架構、精運營和促基建三個維度展開,分享快手是如何實現視頻基礎架構的目標。
2.1 整架構
圖6
第一點是整架構。我們通過調整視頻基礎架構的形態、改善組織能力,從而提升業務效率。
圖7
媒體處理是視頻行業最核心的能力。在快手場景下,需要讓創作者知道視頻已開始處理以及處理已完成。在這個處理邏輯中,我們需要生成多碼率視頻,抽取短視頻封面,以及進行語音識別輸出字幕。基于這些能力,才能滿足短視頻業務的基本要求。這一時期,媒體處理功能是基于一系列的基礎工具完成的:FFmpeg、MP4Box和Shaka。
圖8
這些工具不僅能力強大,而且使用方式靈活,可以很容易地完成上述功能。其優點是只需要幾個人就能快速應對業務需求,但隨著場景越來越廣泛、團隊規模越來越大,這個架構就會面臨許多問題。
首先是效率問題,工程師如果需要在業務代碼中升級FFmpeg版本或轉碼邏輯,就需要連同業務邏輯一起調整,非常影響迭代速度。同時,由于參與開發的團隊很多,業務代碼的沖突也時常發生。所以,當快手音視頻團隊成立后,立刻進行了第一代升級。
圖9
在第一代升級中,我們首先進行了解耦(如圖9所示)。把底層技術工具封裝成獨立服務,并且用配置去管理每個服務的調度方式。這種架構的改造初步完成了音視頻能力和業務邏輯的解耦。
圖10
升級后,代碼邏輯變得更簡單,具體命令行由服務內部進行維護,業務邏輯僅保留服務的調用。當音視頻團隊進行轉碼內部邏輯變更時,業務邏輯無需改變,從而保障了業務迭代速度。
圖11
這樣的系統可以維持兩到三年,但當視頻基礎能力變得復雜,仍然會遇到一些問題。首先是維護成本高,底層服務雖然完成了對工具能力的封裝,但當畫質增強、特征提取等新能力出現時,仍然需要不斷增加新服務,投入維護成本。同時,業務接入邏輯也越來越復雜。如轉碼服務增加了分片轉碼邏輯,而底層服務沒有流程管理能力時,業務邏輯就需要關注如何分片、轉碼后分片如何合并等。底層邏輯變更仍然帶來了業務調用邏輯的不斷膨脹,模塊間的邊界越來越不清晰。
圖12
在這個階段,隨著快手海外業務、生態獨立業務的擴張,代碼維護性差、性能相關問題都被進一步放大,快手也進行了第二次架構升級。
圖13
這次升級核心圍繞兩層系統:流程編排引擎和基于FaaS的計算平臺。我們將所有轉碼流程進行了規劃(如圖13所示)。流程編排引擎以有向無環圖的方式對轉碼流程進行規劃、整合和治理。執行過程中,不同能力對應不同函數,每個能力無需獨立部署,而是統一交給函數平臺進行管理。
圖14
這次架構改造帶來了兩方面的優勢。首先是邏輯進一步解耦,業務邏輯對于底層音視頻能力的感知進一步弱化,業務邏輯無需關注如何執行,只需完成規劃工作。以畫質增強的計算為例,規劃上只是三個步驟:視頻畫質增強,進行視頻轉碼和封面抽取工作。規劃完成后,執行交給編排引擎和函數平臺來完成。其次是性能提升的優勢。由于上層只給規劃方案,下層計算平臺就有了更大的優化空間。比如視頻轉碼的一進多出工作,我們希望用一次解碼轉出多個轉碼檔位,在上層規劃時只需開啟一進多出能力,底層調度執行時可以基于計算資源和時間開銷的具體情況進行動態規劃。
圖15
目前,快手已基本完成了上述架構的改造,收益十分明顯。由于持續解耦業務邏輯,業務只需關心業務邏輯,技術團隊只需關注原子能力的提升,無論是算法上線速度還是業務迭代速度,都得到兩倍以上的提升。同時流程編排簡化了業務邏輯代碼,實現了國內、海外和生態業務共享一套邏輯,這樣代碼量降低到原來的三分之一。基于這樣的視頻基礎架構,整體人效有了成倍的改善。
圖16
上述快手的視頻基礎架構演進歷程其實并不獨特。我們選取兩個在視頻基礎架構投入巨大的公司:Netflix和Facebook,他們基本上走的是同一條路。2014年以前,Netflix和Facebook分別上線第一套轉碼系統,和快手第一次架構升級形態幾乎一致,都是對底層基礎能力進行的服務封裝。而從2014年到2019年,Netflix和Facebook都完成了編排引擎和底層函數計算平臺相結合的架構升級。有個小插曲,Netflix剛開始做了規則引擎的嘗試,這是因為當時沒有那么多視頻上傳,而一旦更新視頻算法,需要對過往所有視頻進行重轉,而規則引擎可以很直觀地管理好算法迭代引起的老視頻重轉觸發問題。但Netflix后來發現流程編排引擎涵蓋場景更廣,可以覆蓋其算法研究,從而架構升級到了編排引擎。
當兩個公司在沒有交流的情況下,架構演進走了相同的路,那么未來的演進路徑是否還會一致嗎?2019年,Facebook視頻基礎架構團隊和Netflix媒體技術團隊進行了圓桌討論,一起來探討視頻基礎架構最終需要解決什么問題,未來系統會如何演進?
圖17
討論的結果竟然驚人的一致。架構迭代中要解決的核心問題是讓業務只關注要什么,而不是視頻怎么來和放在哪里。如果要滿足業務希望的接口,整個媒體處理平臺的接口應該是函數式編程,而不僅僅是把計算執行交給FaaS平臺。如何理解函數式編程?我們認為過去的架構演進是以進程的方式轉化成工作流編排方式,而業務關注的核心是資源,是可播放的視頻或可展示的圖片,而視頻具體的碼率、從哪里來、什么時候處理,會給業務帶來額外的負擔。
圖18
我們認為未來的架構演進會從面向工作流的編程進化到對資源的函數式聲明。一個資源可以是一份文件或是一個函數過程。這樣既實現了函數的統一管理,也簡化了業務對資源的管理成本。
2.2 精運營
圖19
在做音視頻架構和管理資源時,精細化運營的核心邏輯是如何完成資源之間的高效置換。資源置換關系上有很多固定閾值,使用ROI邏輯可以實現更優化的置換關系。類比程序優化中的時間和空間互換邏輯,視頻基礎架構的資源管理優化是三種資源的互換:計算、存儲和帶寬。
圖20
首先需要理解視頻生命周期,我們選取了三個比較典型的快手視頻,橫軸是年齡(視頻發布至今的總時長),縱軸是年齡時間點對應的用戶觀看總時長。隨著視頻年齡的推移,視頻都會經歷或大或小的波峰。無論波峰多大,大致能分三個周期:爬坡期,觀看的人數逐漸增多,視頻變得越來越熱門;衰退期,觀看人數減少;沉默期,在很長一段時間中有零星播放記錄,但大量時間是無人觀看的。基于這個視頻生命周期,需要去思考如何置換資源。
圖21
在爬坡期,我們用計算和存儲置換帶寬,這也就是高熱轉碼。當視頻變得熱門(播放量越大)時,多花費計算資源進行極致壓縮,多產生一個高壓縮率檔位有可能帶來巨大的帶寬收益。當視頻進入沉默期,我們用帶寬置換存儲。因為轉碼產生的存儲資源是可再生的,我們對存儲進行回收,這帶來了多碼率檔位的減少。碼率檔位的減少可能會帶來帶寬的波動,但因為長尾視頻占比高,時間越長,越多視頻進入沉默期,這些置換帶來了巨大的存儲收益。
圖22
精細化運營上有哪些可以改進的呢?關于高熱壓縮,傳統方法是用粉絲數或累計播放量來判斷視頻是否進入爬坡區。面對爬坡速度很快的視頻,這個方法非常有效,一個靜態閾值就可以決定這個視頻是否應該進行計算到帶寬的資源置換。
圖23
但對于不那么熱門的視頻,雖然處于衰退期或沉默期,由于歷史累計播放量仍會觸發高熱,從而浪費轉碼計算資源。而這部分計算并沒有成功置換到帶寬。
圖24
解決這個問題需要兩個步驟。首先是播放量預測,采集視頻的播放走勢,分析其生命周期,然后用AI模型進行訓練。當播放數據越多,AI模型越高級,預測擬合度就越精準。比如我們預測某個視頻未來播放量的走向如圖24所示,那么在T1時刻進行轉碼, T2時刻轉碼完成開始分發,未來播放量帶來的帶寬收益是可折算的。
圖25
那么,第二個步驟就是預測ROI。前面提到了帶寬收益,轉碼的開銷代價可以從歷史數據中挖掘。通過收益和代價兩個指標(可以根據帶寬節省收益和計算開銷費用的折算進行嚴格排序),是可以決策某個視頻是否應該觸發高熱轉碼,及高熱轉碼的優先級。如果ROI小于100%,則無需進行高熱轉碼。當計算資源不足時,則嚴格按照ROI邏輯進行優先級排序,從而實現最重要的資源放在ROI最高視頻上。
今年我們上線第一版ROI邏輯時,不僅節省了30%的計算資源,極致壓縮檔位的播放覆蓋率反而提升了15pp,這意味著巨大的帶寬節省收益。因為這是套線上自動算法,數據會持續改善AI模型的測算效果,并可以根據線上變更自動調整參數,當新上線編碼檔位、當服務一個新的業務單元時,我們都可以減少兩人月的人力投入。從這里可以看到,精細化運營既節約資源成本也節約人力成本。
圖26
ROI邏輯不僅用在計算置換帶寬,還可以用帶寬置換存儲。在圖26中,橫軸是判斷一個視頻是否進入沉默期的時間閾值,縱軸是帶寬成本和回收沉默期視頻產生的收益。通過大數據分析和AI模型預測,我們可以找到ROI曲線的頂峰,這里存儲節省費用最大化超過帶寬開銷,我們針對這類視頻進行存儲回收。基于這樣的沉默期ROI算法對存儲進行精細化管理,線上表現是節省了50%的存儲費用。
2.3 促基建
圖27
促基建就是推動基礎能力突破瓶頸。視頻是一個重工業,我們在降本增效過程中逐漸探測到了基礎架構的邊際。這時候只有推進底層架構革新,才有可能突破整個技術棧的瓶頸。
圖28
促基建的一個方向是網絡。在海外市場,快手通過增加更多的網絡資源以更好地服務用戶,在網絡接入上,讓用戶選擇最優質的網絡節點。如在上傳場景下,通過增加網絡接入節點的資源部署,平均視頻作品上傳耗時縮減20%,上傳成功率提升2pp。
圖29
促基建的另一個方向是引用新技術。視頻基礎架構的迫切需求持續推動了底層基建的升級和新技術被采用。近幾年,我們看到函數計算平臺落地、混部資源池的建立、甚至自研網絡KTP協議,還有邊緣計算應用到RTC場景——這些都是音視頻基礎架構團隊推進的。無獨有偶,Facebook和YouTube也在做類似事情,這是視頻基礎架構有別于其他基礎架構獨特的一點。
促基建還體現在硬件上。當視頻基礎架構探測到整個底層系統的邊界時,往硬件擴展也是個思路。自2020年,快手進行了硬件加速器嘗試,做了很多異構計算的工作。近幾年,硬件話題越來越熱,今年YouTube公布了其VCU,早在2019年Facebook公布了其基于加速器的視頻轉碼板卡。
3. 未來展望
為了做好視頻基礎架構,以三個目標(整架構、精運營、促基建)為牽引,未來終態會是怎樣的呢?我認為在不斷迭代目標的過程中,不僅會帶來業務效率的提升,同時基礎能力的產品化程度也會更高。這意味著業務對資源的管理更簡單、更便捷。希望工程師們能夠擁有更復合的能力,將音視頻、數據、AI等多種能力進行整合,在新場景中創造更多可能。
講師招募
LiveVideoStackCon 2022 音視頻技術大會 上海站,正在面向社會公開招募講師,無論你所處的公司大小,title高低,老鳥還是菜鳥,只要你的內容對技術人有幫助,其他都是次要的。歡迎通過?speaker@livevideostack.com?提交個人資料及議題描述,我們將會在24小時內給予反饋。
喜歡我們的內容就點個“在看”吧!
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的视频大时代下基础架构的演进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【城市沙龙】LiveVideoStack
- 下一篇: 面向视频原生,火山引擎发布视频云与边缘云