楊顯鈞 ,徐 林 ,姜浩然
(1.四川大學 計算機學院,四川 成都610064;2.中興通訊股份有限公司,北京100085)
隨著計算機網(wǎng)絡的發(fā)展和軟硬件水平的提升,作為多媒體與網(wǎng)絡結合的產(chǎn)物,流媒體技術應運而生。流媒體技術的核心主要集中在流媒體服務器方面。隨著用戶需求多樣化、信息海量化和交互實時化,服務器性能逐漸成為用戶需求的瓶頸。如何在保證現(xiàn)有的硬件條件下有效地解決大量用戶訪問產(chǎn)生的服務器性能瓶頸,是目前乃至今后需要著力解決的課題。
對此,有學者提出了集群的概念。服務器集群是將許多較為廉價服務器通過網(wǎng)絡和相關軟件連接起來,用以提供比單一服務更穩(wěn)定、更高效、更具擴展性的服務平臺,使整個系統(tǒng)更加健壯,從而解決單點故障可能帶來的問題。
本文采用服務器集群的方式均衡用戶服務請求,使每臺服務器負載最優(yōu),保證了服務器可以有效地向用戶提供服務。Red5流媒體服務器提供了一種開源模式的集群架構,為了更好地模擬用戶需求,本文改進了Red5流媒體服務器的集群架構,以調(diào)度服務器為中心進行負載均衡調(diào)動,通過負反饋機制根據(jù)流媒體服務器負載量值計算權值,以此分配用戶請求的策略進行負載均衡。對于視頻文件的存儲,為了節(jié)省存儲空間和對用戶點播請求進行分流,對基于Zipf的點播分布規(guī)律的兩階段副本放置算法進行改進,從而達到對用戶請求分流的目的。
流媒體服務器要處理眾多的用戶請求,并且要保證響應速度,它還要具有傳輸數(shù)據(jù)量大、持續(xù)時間長的特點。在這種情況下,服務器集群就發(fā)揮了優(yōu)勢。它將許多較為廉價的服務器通過網(wǎng)絡和相關軟件連接起來,用以提供比單一服務更穩(wěn)定、更高效、更具擴展性的服務平臺,集群部署可以增加整個系統(tǒng)的健壯性,更好地解決單點故障帶來的問題。集群具有主動容錯性、負載均衡性等優(yōu)點[1],一方面當集群中的某個節(jié)點出現(xiàn)問題,不能正常工作時,它的任務會自動轉移到其他正常工作的節(jié)點上,繼續(xù)為用戶提供服務。另一方面將流媒體的服務均勻分配到各個服務器上,合理地利用各個流媒體服務器的資源,能更好地為用戶提供服務。
對此,Red5技術提供了一套服務器集群解決方案。在Red5環(huán)境中,邊服務器會將相同范圍的用戶請求分配到同一源服務器,所有源服務器上需要存儲相同視頻,邊服務器采用輪詢方式分配用戶請求。這種方式存在負載不均衡、存儲效率低等問題。本文在此集群方案基礎上,對Jabber系統(tǒng)進行了改進并提出了一種更簡潔實用的方案,如圖1所示。
在這個方案中,調(diào)度服務器實時監(jiān)控服務節(jié)點的負載狀況,使調(diào)度相關策略在調(diào)度服務器上實施,從而將具體服務與請求調(diào)度分離。在此基礎上,調(diào)度器動態(tài)采集流媒體服務器的負載。其核心思想就是充分合理利用每臺服務器的剩余處理能力,將熱門影片合理復制到各個流媒體服務器上,使熱門影片有多個副本,這樣可以達到用戶點播請求分流的作用,而點播次數(shù)低的視頻文件則少存儲幾份,以此達到節(jié)省服務器空間的目的。
流媒體服務器集群中的視頻存儲問題關鍵在于副本放置。其原理是為了解決集群環(huán)境下單臺服務器負載過重的問題。具體而言,就是對某些點播頻繁的視頻進行復制,將其副本放置到其他服務器,以達到分流的目的;當視頻訪問熱度下降時,還要考慮刪除副本,以節(jié)省存儲空間。副本放置的相關算法有閾值算法、兩階段算法、背包問題算法[2]等,這些算法中有些可以應用在大型視頻點播系統(tǒng)中,但算法過于復雜,甚至沒有考慮到視頻點播概率的動態(tài)變化[3]。針對上述情況,本文采用了基于Zipf分布規(guī)律的副本放置策略,這樣既達到均衡效果,也節(jié)省了存儲空間。
研究統(tǒng)計[4]表明,視頻的點播類型的服務近似服從Zipf分布,即20%的節(jié)目將吸引80%左右的用戶點播,而剩下80%的節(jié)目僅有20%左右的人點播。即將視頻文件按流行度排序為 L1,L2,L3,…,Ln,則各個節(jié)目的點播概率可設為 pi=P{X=Mi}(i=1,2,3,…,n),滿足:
其中 θ是分布曲線的偏斜度,θ∈[0.271,1]。
在實際情況中可以令副本占據(jù)磁盤空間的70%,此時集群系統(tǒng)中副本數(shù)和請求的分配達到最優(yōu)狀況。用ni表示視頻文件i副本的個數(shù),fi表示視頻文件i的大小,ns表示服務器的數(shù)量,Cvi表示可用磁盤容量,如下式:
其中,ni必須為整數(shù),由于服務器有數(shù)量限制,每臺服務器上不能放置相同文件的兩個副本,因此ni必須小于 ns。
由以上公式可以近似預測出副本的數(shù)目。為了解決重復計算的問題,本文規(guī)定,在排序時只排序不同的文件,副本由原本產(chǎn)生,不會由副本產(chǎn)生副本。
在放置副本過程中,根據(jù)實際環(huán)境特點,衡量服務器的負載要綜合考慮服務器會面臨的各種情況[5]。本文以3個指標進行衡量:產(chǎn)生聊天室的數(shù)量C、當前流媒體服務器的磁盤空間大小Q以及該服務器上所有視頻文件的點播概率之和P。通過這3個指標可以預測以后的服務器的負載狀況,如下公式:
w1、w2、w3為權值。根據(jù)以上公式可以計算出服務器的可能負載。如果副本數(shù)量ni=ns,則將每個服務器上依次放置。如果 ni 流程描述如下: (1)根據(jù)Zipf分布計算副本數(shù)量; (2)如果 ni=ns,則轉 到步 驟(5),如果 ni 圖2 副本計算與放置流程 (3)根據(jù)式(3)計算各個服務器的可能負載; (4)根據(jù)ss的值從小到大給服務器排序,依次放置副本,如果該服務器上已經(jīng)存在該視頻文件的副本,則放棄放置,標記成放置成功,直到副本數(shù)為ni-1。轉到步驟(6); (5)向服務器中依次放入副本,如果已經(jīng)存在該視頻文件副本則放棄放置,標記成放置成功,直到副本數(shù)為ns-1; (6)結束。 3.3 視頻副本清理策略 為體現(xiàn)視頻熱度的變化,需要根據(jù)每天的點播情況改變視頻熱度,保證熱度低的視頻副本不過多地占用服務器空間,需定期進行清理[6]。具體而言,就是根據(jù)該檢索數(shù)據(jù)庫中的視頻信息表,判斷當天的視頻點播是否達到閾值,如果未達到則在總的點播次數(shù)上減去相應值,表示該影片的熱度下降,反之則加上當天的點播次數(shù),表示熱度上升。如果該熱度小于刪除的閾值,則向流媒體服務器發(fā)送刪除命令。流程如圖3所示。 本文深入研究了Red5流媒體服務器集群相關技術以及現(xiàn)有的Red5集群解決方案,發(fā)現(xiàn)其中的不足,采用了一種基于Zipf分布規(guī)律的副本放置策略和負反饋動態(tài)負載均衡調(diào)度相結合的方式對用戶請求進行分流,以提高系統(tǒng)服務質(zhì)量,并將該方法成功應用于某市中小學心理康復綜合社會救助服務系統(tǒng)。該平臺旨在建立中小學生心理康復綜合社會援助技術支撐體系和輔導體系。該方法不僅適應于上述平臺,同時對其他的負載均衡集群系統(tǒng)也具有一定的借鑒及參考意義。此外,隨著用戶信息和資源文件增長,在保證服務器數(shù)據(jù)安全性的基礎上,如何確保其健壯性,引入云計算平臺并實現(xiàn)海量數(shù)據(jù)的分布式存儲,進而更好地對平臺提供技術上的支持,達到更高的可用性,將是下一步研究的重點。 圖3 副本刪除流程 [1]李子民.基于LVS的集群動態(tài)負載均衡算法研究[D].成都:電子科技大學,2009. [2]周航.大規(guī)模流媒體服務系統(tǒng)存儲調(diào)度研究[D].合肥:中國科學技術大學,2007. [3]姜琳.流媒體服務器的存儲策略[D].上海:復旦大學,2010. [4]宋曉華,黃河清,曹元大.基于用戶訪問統(tǒng)計特性的流媒體文件復制策略[J].南京理工大學學報,2007,31(50):617-621. [5]姜浩然,徐林.基于RTMP的流媒體服務器的研究[J].計算機與數(shù)字工程,2011,39(10):104-108. [6]陳世明.基于Lucene與RTMP的學生心理健康實時視訊平臺的設計與實現(xiàn)[D].成都:四川大學.2011.