葛 曉 燕
(商丘學院體育學院 河南 商丘 476000)
近年來,我國體育直播產業呈現井噴式發展,騰訊體育、PP體育和直播吧等各大在線體育平臺均購買大量體育賽事直播版權,如以世界杯、田徑錦標賽為代表的杯賽賽事和以NBA、英超、法網、澳網為代表的常規賽事。我國體育賽事直播朝著正規化、規模化發展。相比傳統電視平臺,網絡直播不僅可以提供更個性和豐富的體育直播服務,還擴展了體育賽事直播產業的商業模式,包括付費觀看、版權分銷、會員訂購和視頻廣告等,從而進一步推動了體育網絡直播行業朝著健康、規模化和產業化的道路發展。
僅2018年4月份,國內體育類直播APP活躍用戶就有4 643.5萬人,全年體育直播播放量超過5.5億次。體育直播的核心是賽事內容,熱門賽事和常規賽事的播放量和用戶基數均有較大差異。這對各大直播平臺流數據檢索能力提出了較高的要求,也直接關系到平臺是否可以為用戶提供高清、流暢、同步的體育賽事直播服務。目前,盡管基于內容的多媒體數據檢索受到廣泛的關注,但仍然面臨諸多挑戰[1]。首先,內容本身是主觀存在的,比如視頻文件都是作為單個主體存儲于服務器中,那么就需要一套強大的搜索工具,可以從多方面(包括關鍵詞、聲音、顏色甚至空間信息)對請求的內容進行搜索。其次,如果一種方法或者處理技術只為一種特定類型的數據或者特征而設計和開發的,那么它通常不適用于其他類型的數據或者特征。例如,用于音頻數據的技術可能不適用于處理視頻流量。最后,通常需要徹底搜索多媒體數據庫才能夠找到用戶所請求的內容,這個過程極其耗時[2]。
目前,視頻流量是網絡負載的主要內容。網絡技術快速發展,出現了諸多服務啟用技術,如異步傳輸模式(Asynchronous Transmission Mode,ATM)和非對稱數字用戶線(Asymmetric Digital Subscriber Line,ADSL),這也促成了網絡中和視頻需求高度相關的一項重要服務,即視頻點播(Video On Demand,VOD)業務[3]。VOD業務的一個關鍵挑戰在于需要存儲大量的視頻文件,同時能夠根據用戶請求,實時地訪問每個視頻文件,并將其通過網絡傳輸給用戶。通常,大量的視頻文件會被存儲在服務器集群上。對于支持VOD服務的計算機集群,我們將其統稱為VOD系統。實際上,VOD系統也可以由單服務器實現,但是單服務器系統的缺陷比較明顯,無法實現系統的彈性擴展和有效的負載均衡。另外,實踐經驗表明,多服務器體系結構能夠更加有效地滿足客戶對視頻質量的要求,并同時接納更多的視頻請求,這點是單服務器系統所無法保障的[4]。
鑒于以上因素,VOD系統一般被描述為一個均勻分布的服務器集群(包括同構和異構計算與存儲節點)。針對現有的VOD系統,已經出現了大量的研究工作。這些研究工作所涉及的范圍包括數據放置[5]、資源管理[6]、磁盤調度[7]、訪問控制[8]、同步[9]以及容錯[10]等問題。除此之外,對于服務器集群的負載均衡問題也有諸多研究。然而,這些研究要么只針對一般任務(并非視頻任務)在集群上的負載均衡[11-12],要么通過探討數據放置策略來實現服務器之間的負載均衡[7-8]。一方面,視頻任務和一般任務之間的特征完全不同,針對二者的負載均衡策略無法實現通用。另一方面,數據放置策略屬于一種靜態處理方式,在面對動態視頻流量請求時,并不能進行有效應對。例如:文獻[10]提出了一種數據放置策略,它通過剝離磁盤或者服務器上的視頻對象來避免負載均衡。但是這種方法會產生額外的開銷用于同步不同介質上的視頻內容,而且它需要使用同構的磁盤或者服務器來構建VOD系統的想法不切實際。文獻[12]則提出通過在服務器之間復制流行的視頻文件來實現負載均衡,但同樣也面臨著一些問題,比如它需要額外的空間和時間去決定執行視頻復制的時間點。此外,其他一些研究人員也研究了分布式VOD系統中的負載均衡問題[7-12]。
本文以集中式的VOD服務器集群為出發點,研究VOD服務器集群的動態負載均衡問題。在設計VOD系統框架和算法時,充分考慮服務器集群可能面對的各種負載情況(如I/O密集型或者內存密集型負載情況),同時引入貪心策略,對不同的情形做出不同的決策。例如,對于I/O密集型負載請求,本文算法首先需要滿足該請求對于其他因素(如內存和計算)的最低需求,在此基礎上,最大化其所請求的I/O資源。這種設計模式充分考慮了當前請求對于不同資源的需求之間的優先級差異,從而最大化業務請求的效率。
本文提出的VOD系統框架模型如圖1所示。該系統集群中所有的服務器都通過高速網絡(包括ATM交換機、快速以太網或者交叉交換機)連接,從而形成一套內部網絡。

圖1 VOD系統模型
盡管每個服務器都具有CPU、內存和I/O子系統,但它們所執行的功能可能會有所不同,從而一定程度上實現系統的可伸縮性。例如:當用戶發出視頻對象請求時,首先加載調度程序的服務器將會對該請求進行內容篩選,再根據請求內容通過內部網絡搜索視頻文件的位置,最后將該請求與請求的視頻對象一起傳輸給目標服務器。目標服務器接收到請求之后,就會通過外部網絡以給定的速率將視頻文件發送給該請求的用戶,直至視頻文件傳輸完畢。以上過程依賴于兩項條件,一是由于視頻存儲要求,VOD系統通常需要和磁盤綁定在一起,二是從視頻服務器到用戶之間的網絡帶寬需要得到保障,從而支持大規模甚至超大規模視頻流的傳輸。
此外,對于每個視頻服務器,都存在一個等待隊列,用于緩存到達的視頻請求。隊列模型也展示在圖1中,那么可以依據現有的單隊列模型對VOD系統進行建模。假設VOD系統中的服務器集群通過互聯網與外部進行通信,從而為視頻請求的到達和服務器的響應提供雙向通道。另外,假設請求的到達速率恒定,且服從泊松分布。組成集群的服務器節點本質上是異構的,因此,這些服務器的響應和服務速率會有所區別,分別用{s1,s2,…,sn}表示。那么,用戶先通過互聯網以恒定的速率向VOD調度程序發送視頻請求。然后,調度器按照特定的負載均衡策略將這些請求分配給各個視頻服務器節點。最后,這些服務器節點以不同的響應速率通過外部網絡將視頻結果反饋給用戶。
對于到達的每一個視頻請求,通常來說,其對于系統CPU的需求最低,因為視頻請求任務的完成本質上是獲取視頻內容,但是這個過程需要系統內部進行交互,從而需要消耗大量的I/O和內存資源。然而,作為VOD服務器集群,我們需要考慮可能會出現各種工作負載情況,包括I/O密集型和內存密集型負載。針對這些情形,我們提出了一種適用于各種工作負載條件的負載均衡算法(Load Balancing Algorithm,LBA)。算法會根據視頻服務器的內存、CPU以及任務的I/O需求來平衡整個服務器集群所接收到的視頻請求,進而最小化每個任務的響應時間和完成時間。需要注意的是,這里并不考慮任何任務遷移的情況。
為了實現最小化任務響應和完成時間的目標,需要指明任務的生命周期T。假設任務請求到達的時間點為tarrive,而視頻文件成功全部發送至用戶端的時間點為tend,那么:
T=tend-tarrive
(1)
這也就意味著從系統接收到請求至系統滿足該請求之間的持續時間即為任務的生命周期。由于請求的內容通常以視頻數量為單位,那么在T內,VOD系統還需要實現從輔助存儲設備加載該視頻文件以及路由和傳輸該視頻文件的過程。
VOD服務器集群負載均衡算法流程如算法1所示。
算法1VOD服務器集群負載均衡算法
輸入:視頻任務請求序列{1,2,3,…,n}
輸出:視頻文件
1. 選擇當前的視頻請求i;
2. FOR(i 3. 計算該任務對于I/O、CPU以及內存的需求,表示為I/O(i)、Memory(i)和CPU(i); 4. 根據MaxReq(i)=max{I/O(i), Memory(i),CPU(i)}計算最大的資源需求; 5. IF(I/O(i)==MaxReq(i)) DO 6. 計算所有具有較大有效I/O資源(高于所需要的量),且能夠滿足基本內存和CPU需求的服務器節點; 7. 將任務i分配給這些節點中能夠以最快速度響應該任務的服務器節點; 8. ELSE IF(Memory(i)==MaxReq(i)) DO 9. 計算所有具有較大有效內存資源(高于所需要的量),并且能夠滿足基本I/O和CPU需求的服務器節點; 10. 將任務i分配給這些節點中能夠以最快速度響應該任務的服務器節點; 11. ELSE IF(CPU(i)==MaxReq(i)) DO 12. 計算所有具有較大有效CPU資源(高于所需要的量),并且能夠滿足基本I/O和內存需求的服務器節點; 13. 將任務i分配給這些節點中能夠以最快速度響應該任務的服務器節點; 14. END IF 15. 更新該服務器節點的狀態; 16. END FOR 算法1用于協調跨n個異構服務器調度視頻請求任務。每個服務器對應具體賽事資源。分配方法取決于當前服務器運營所有賽事轉播情況,根據需求分配。接下來,我們將介紹如何對I/O、CPU以及內存資源負載進行索引。首先,給定某個服務器節點,可以通過該節點當前的CPU負載以及CPU隊列的等待長度為特征,可以確定該節點是否存在CPU過載的情況。其次,服務器節點的內存負載情況也可以通過該節點上運行的所有任務所占用的內存空間總和來進行判斷。而I/O負載度量則包括兩種類型的I/O訪問,分別為隱式I/O請求和顯式I/O請求,前者由內存錯誤導致,而后者通常由任務本身特征導致。 對于算法1中所展示的偽代碼,其輸入為一組提交給負載均衡調度器的獨立任務。算法本身通過將每個任務按需地分配給獨立的視頻服務器,從而在最小的響應時間內,滿足用戶請求,完成請求視頻內容的傳輸,并最終實現VOD集群資源的負載平衡。具體而言,步驟1-步驟3完成請求的到達處理,并預估其CPU、I/O和內存資源需求,具體操作由負載均衡調度器完成。步驟4計算出三種資源中需求最大的一項,然后將結果交付給接下來的計算過程。步驟5-步驟13分別通過和最大值進行比較,判斷出當前任務的類型,從而實現相應的處理。步驟6-步驟7完成對I/O需求最大任務的處理,步驟9-步驟10完成對內存需求最大任務的處理,步驟12-步驟13完成對CPU資源需求最大任務的處理。處理的過程中需要遵守兩個約束條件:1) 除了盡量最大化需求量最大的資源外,還需要保證另外兩種資源的有效容量必須滿足最低要求;2) 盡量最小化服務器節點對于任務的響應時間。根據以上條件,負載均衡調度器才能將任務分配給最合適的服務器節點,從而保證該任務的圓滿完成。 本文采用VOD系統對體育賽事直播網站提供服務。VOD系統由一組服務器節點所組成,在其中選擇一個節點,將其定義為視頻請求的主節點,也稱為集群中的頭節點,主要負責負載平衡和監控其他節點的可用資源。頭節點以先到先服務(First Come First Serve,FCFS)的方式處理所有任務,集群中的其他計算節點則依賴于頭節點所提供的信息來進行任務分配決策。待執行的任務首先到達頭節點,且假設任務的到達速率是恒定的,那么經過頭節點決策,任務會被分配到最適合的服務器節點上的本地隊列中等待被執行。 圖2給出了本文系統框架的性能評估。給定1 000個視頻請求任務,通過增加服務器的數量來計算總共的任務執行時間。可以看出,隨著服務器數量的不斷增加,1 000個任務的總執行時間逐漸減少。因為服務器總數量的增加導致平均分配給每個服務器的任務數量的減少,并且由于單個服務器之間為并行工作模式,那么自然就會降低總的執行時間。除此之外,還可以觀察到在服務器數量超過15之后,執行時間趨于平穩,這表示有效資源數量已經超過任務的數量,任務的完成度趨于飽和。通過多次重復性的測試,將服務器數量從1變化至20,系統在18~19臺服務器上達到了飽和點,即執行時間不再提高,這也從一定程度上反映出了本文提出的VOD系統框架模型的合理性。 圖2 提出系統模型的性能圖 為了驗證提出算法的有效性,將LBA與FCFS、隨機策略(Random)進行比較。其中,FCFS按照到達順序將任務分配給節點,如任務1分配給節點1、任務2分配給節點2等。隨機策略則將任務隨機分配給集群中的任一節點。對于這三種算法,我們探討了在任務到達速率不變情況下的服務器負載均衡情況。為了便于觀察結果,我們計算了不同數量的任務條件下,服務器集群負載的標準偏差值。通常來說,這個值越接近于0,服務器集群內部的負載越均衡。那么對于具有n個異構服務器的集群,其標準差的定義如下: (2) 式中:ci為節點的能力值;pi為按比例計算的任務的累積概率。給定20臺服務器,改變任務的數量(從1 000至2 500),實驗結果如圖3和表1所示。 圖3 三種算法的負載均衡標準差比較 表1 服務器負載均衡標準差比較(給定20臺服務器) 圖3主要用于對比不同算法之間的優劣勢,而通過表1則能夠準確知道不同算法所取得的標準差的值。由圖3可知,相較于FCFS和Random算法,使用LBA算法能夠更加好地平衡集群內部的各服務器節點之間負載情況。除此之外,隨著進入系統任務數量的不斷增加,服務器的負載情況也會相應惡化。這是因為總數量的增多必然會導致分配到各服務器的任務數量差異越來越明顯。盡管如此,LBA可以針對不同特征的視頻請求任務,采用不同的分配方式,相對而言更加合理,更能夠適應系統的彈性擴展需求。 為了在實際環境中進一步驗證提出算法的優勢,本文引入了騰訊云平臺,通過在其上部署提出的算法,來實現用戶與體育直播視頻之間的負載均衡。以2019年4月16號的NBA直播比賽(勇士-快船)為例,將視頻文件存儲在騰訊云中,測試直播期間平臺所能夠接入的最大用戶數量和平均直播帶寬,結果如表2所示。 表2 負載均衡算法在實際應用中的驗證比較 可以看出,本文算法在直播期間能夠接入的用戶數量最多,這是因為提出的算法充分考慮了視頻服務器之間的負載均衡。相較于與對比算法,其資源利用最高,因此,給定相同的資源,本文算法能夠接納更多的用戶。除此之外,三種算法平均分配給每個用戶的直播帶寬相差不大,這是因為直播內容的傳輸需要經過互聯網,互聯網上的帶寬分配和用戶的付費模式有關。用戶訂購且用于體育直播的帶寬上限為0.5 Mbit/s,觀察表2可以發現,本文算法能夠交付最接近于上限值的平均直播帶寬(0.48 Mbit/s)。主要原因在于系統內部進行負載均衡,直播內容傳輸出系統的速率相對對比算法較高,因此導致了這三種算法之間不同的平均直播帶寬。 本文針對體育賽事直播平臺中的VOD集群所面臨的各種負載情況提出了一種負載均衡算法LBA,針對不同特征的請求,為其計算和分配符合其特征的服務器節點。該算法的目標是在VOD集群中實現全局磁盤資源利用率的最大化,同時最大限度地減少在VOD集群上運行的作業的響應和執行時間。通過與FCFS和Random算法進行試驗對比,發現本文算法能夠獲得更好的負載均衡結果,極大地提高了體育網絡直播平臺負載均衡能力,可以高效地為用戶提供一個流暢、高清的網絡直播服務。3 實驗與分析
3.1 系統性能分析

3.2 對比分析


3.3 應用驗證與評估

4 結 語