楊波
摘 要: 當(dāng)高清化、高負(fù)載成為電視會(huì)議發(fā)展的主流,傳統(tǒng)的技術(shù)保障方式使得服務(wù)器遭遇到技術(shù)瓶頸,急需新的技術(shù)手段來保證會(huì)議系統(tǒng)的正常運(yùn)行。為此,在介紹電視會(huì)議和云計(jì)算相關(guān)概念的基礎(chǔ)上,提出了一種基于云計(jì)算的電視會(huì)議系統(tǒng)方案,該方案使用集群管理的方式來避免宕機(jī)事件的發(fā)生。采用該方案能減少電視會(huì)議系統(tǒng)建設(shè)成本,提高工作效率,進(jìn)一步加快部隊(duì)信息化建設(shè)的進(jìn)程。
關(guān)鍵詞: 電視會(huì)議; 云計(jì)算; 服務(wù)器; 集群管理; ZooKeeper
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2013)09-25-03
0 引言
隨著全球經(jīng)濟(jì)的高速發(fā)展,電視會(huì)議市場也出現(xiàn)了較大的突破。經(jīng)過多年的發(fā)展,電視會(huì)議技術(shù)日趨成熟,電視會(huì)議系統(tǒng)已經(jīng)成為企事業(yè)單位系統(tǒng)建設(shè)的“標(biāo)配”。電視會(huì)議能讓身處異地的與會(huì)者不受時(shí)間、空間、網(wǎng)絡(luò)的限制,獲得語音、視頻、圖片、文件的自由通訊,方便單位內(nèi)部人員的溝通協(xié)作,降低通訊成本。但是,當(dāng)高清化成為市場的主流,電視會(huì)議服務(wù)器越來越不堪重負(fù),電視會(huì)議系統(tǒng)大容量負(fù)載、大規(guī)模用戶并發(fā)請求的通信要求使得傳統(tǒng)電視會(huì)議技術(shù)遇到了瓶頸。如果采用升級(jí)硬件平臺(tái)或是添加服務(wù)器的方法,不僅投入過于昂貴,而且不能根本性地解決問題[1]。
云計(jì)算的出現(xiàn),為這一問題的解決提供了較好的途徑。順應(yīng)當(dāng)前網(wǎng)絡(luò)應(yīng)用模式轉(zhuǎn)變的趨勢,可擴(kuò)展電視會(huì)議系統(tǒng)的體系結(jié)構(gòu),并部署于云計(jì)算平臺(tái)之上。云會(huì)議采用分布式部署,這使得資源的調(diào)度將更加便捷。而電視會(huì)議對(duì)于畫面的高清要求,也可以通過分布式部署來加以滿足。成熟的云計(jì)算技術(shù)將為電視會(huì)議提供優(yōu)質(zhì)高效的保障。
1 系統(tǒng)相關(guān)技術(shù)
1.1 電視會(huì)議
電視會(huì)議是一種交互的多媒體(語音、圖像、數(shù)據(jù))通信手段,是音視頻技術(shù)、壓縮技術(shù)、數(shù)據(jù)傳輸、交換技術(shù)等手段的綜合應(yīng)用,建立在通信網(wǎng)絡(luò)基礎(chǔ)上。電視會(huì)議的目的是將圖像、聲音和數(shù)據(jù)盡可能不失真地傳送到目的地。傳輸方式主要有雙絞線傳輸、同軸電纜傳輸、微波傳輸、衛(wèi)星傳輸、光纖傳輸?shù)鹊萚2]。
電視會(huì)議系統(tǒng)中傳輸?shù)膱D像是用戶最為關(guān)心的指標(biāo),影響圖像的因素有終端設(shè)備的硬件編解碼器、傳輸速率和視頻編碼格式。終端圖像編碼器將從攝像機(jī)得到的圖像進(jìn)行編碼傳輸,并將得到的圖像信號(hào)解碼到視頻輸出設(shè)備,直接影響到圖像的質(zhì)量。足夠的傳輸速率是圖像傳輸?shù)谋WC,通信線路的發(fā)展使圖像傳輸?shù)玫搅顺浞值谋WC。當(dāng)傳輸速率達(dá)到384Kbps以上時(shí),用戶就可以得到清晰流暢的視頻圖像?,F(xiàn)在電視會(huì)議系統(tǒng)比較常用的傳輸速率在768K-4096Kbps,這樣的傳輸速率可以保證比較流暢的圖像質(zhì)量[3]。
1.2 集群管理
分布式應(yīng)用系統(tǒng)通常部署在一個(gè)有多臺(tái)服務(wù)器的集群環(huán)境中,當(dāng)集群規(guī)模達(dá)到一定程度后,宕機(jī)事件極易發(fā)生。對(duì)于一個(gè)高可用系統(tǒng),必須能夠容忍一定數(shù)量的機(jī)器故障,當(dāng)故障發(fā)生時(shí),其他機(jī)器應(yīng)該可以感知到并作出相應(yīng)處理。ZooKeeper是Apache Hadoop開源項(xiàng)目中的子項(xiàng)目,提供了一個(gè)分布式的協(xié)調(diào)服務(wù)框架。ZooKeeper本身部署在2N+1(N>0)臺(tái)機(jī)器的集群系統(tǒng)中,可以容忍N(yùn)臺(tái)機(jī)器宕機(jī),在保證高可用性同時(shí)還支持高性能的寫操作。用戶構(gòu)建的分布式應(yīng)用可以使用ZooKeeper提供的namespace數(shù)據(jù)模型來表達(dá)用戶集群的結(jié)構(gòu),當(dāng)用戶集群中有機(jī)器宕機(jī)時(shí),ZooKeeper可以提供通知機(jī)制,應(yīng)用系統(tǒng)可以根據(jù)自己的業(yè)務(wù)需求處理宕機(jī)事件。圖1給出了采用namespace數(shù)據(jù)模型描述的某個(gè)集群結(jié)構(gòu)。
該集群由3臺(tái)機(jī)器組成,分別對(duì)應(yīng)namespace模型中g(shù)roup節(jié)點(diǎn)下的3個(gè)子節(jié)點(diǎn),這些子節(jié)點(diǎn)是瞬時(shí)順序節(jié)點(diǎn)。瞬時(shí)表示每個(gè)節(jié)點(diǎn)的壽命不會(huì)超過創(chuàng)建節(jié)點(diǎn)的進(jìn)程的壽命,當(dāng)創(chuàng)建節(jié)點(diǎn)的進(jìn)程結(jié)束時(shí),這些節(jié)點(diǎn)會(huì)自動(dòng)刪除,其他在該節(jié)點(diǎn)上設(shè)置了Watcher的進(jìn)程會(huì)收到通知;順序表示每個(gè)進(jìn)程創(chuàng)建節(jié)點(diǎn)都有一個(gè)序號(hào),該序號(hào)是單調(diào)遞增的。利用節(jié)點(diǎn)的這種特性,集群中每臺(tái)機(jī)器對(duì)應(yīng)一個(gè)瞬時(shí)順序節(jié)點(diǎn),當(dāng)某臺(tái)機(jī)器宕機(jī)后,其他機(jī)器中的進(jìn)程可以收到該節(jié)點(diǎn)被刪除的通知,這樣每臺(tái)機(jī)器都可以感知集群中機(jī)器的狀態(tài)信息,從而實(shí)現(xiàn)了集群管理[4]。
2 系統(tǒng)實(shí)現(xiàn)
2.1 會(huì)議系統(tǒng)構(gòu)成
電視會(huì)議系統(tǒng)主要由電視會(huì)議終端、多點(diǎn)控制單元和傳輸網(wǎng)絡(luò)三部分組成。如圖2所示。
電視會(huì)議終端主要功能是完成音視頻信號(hào)的輸入和輸出,并且傳輸數(shù)據(jù)信號(hào)。電視會(huì)議終端將音視頻信號(hào)和數(shù)據(jù)、指令等數(shù)字信號(hào)處理成數(shù)字碼流,再將它轉(zhuǎn)變成與網(wǎng)絡(luò)接口兼容的信號(hào)格式以信道幀結(jié)構(gòu)送入網(wǎng)絡(luò)進(jìn)行傳輸。當(dāng)兩個(gè)終端之間需要召開點(diǎn)對(duì)點(diǎn)會(huì)議的時(shí)候,使用終端里的撥號(hào)功能就可以實(shí)現(xiàn)互聯(lián)互通。而多個(gè)終端之間要參加會(huì)議的時(shí)候,就需要MCU(多點(diǎn)控制單元)。多點(diǎn)控制單元能實(shí)現(xiàn)電視會(huì)議終端多點(diǎn)間的音視頻互通和數(shù)據(jù)交換。它將處理后的音視頻信號(hào)分配給對(duì)應(yīng)連接的信道。實(shí)際上多點(diǎn)控制單元是一臺(tái)多媒體數(shù)據(jù)交換機(jī),實(shí)現(xiàn)多點(diǎn)間的連接,具備音視頻廣播、多畫面合成、信息交換等功能,實(shí)現(xiàn)各會(huì)議終端的連接與切換。它的作用就像電話交換系統(tǒng),按照用戶的需求進(jìn)行多點(diǎn)間的語音傳輸。多點(diǎn)控制單元為擁有多個(gè)分會(huì)場的會(huì)議召開提供了理想的解決方案。MCU的可堆迭結(jié)構(gòu)使得會(huì)議容量具有可擴(kuò)展性,可根據(jù)終端的增加來增加MCU的數(shù)量。在多點(diǎn)會(huì)議系統(tǒng)中,網(wǎng)關(guān)和網(wǎng)閘具有非常重要的作用。網(wǎng)關(guān)使符合不同標(biāo)準(zhǔn)的視頻終端之間的視頻會(huì)議成為現(xiàn)實(shí)。網(wǎng)關(guān)能提供不同標(biāo)準(zhǔn)終端之間的呼叫信號(hào)翻譯、控制信道信息、音頻編碼翻譯和多路復(fù)用技術(shù)。網(wǎng)閘是構(gòu)建成功的IP電話或多媒體網(wǎng)絡(luò)的關(guān)鍵組件。通過網(wǎng)閘,網(wǎng)絡(luò)管理員可配置、監(jiān)控和管理網(wǎng)絡(luò)系統(tǒng),使網(wǎng)絡(luò)管理員控制網(wǎng)絡(luò)資源(帶寬),限制區(qū)域內(nèi)最高帶寬和終端占用的帶寬,優(yōu)化IP網(wǎng)絡(luò)上實(shí)時(shí)的音頻、視頻和數(shù)據(jù)會(huì)議。
2.2 電視會(huì)議集群管理的實(shí)現(xiàn)
在電視會(huì)議系統(tǒng)中,需要對(duì)計(jì)算集群進(jìn)行管理。電視會(huì)議的所有服務(wù)器構(gòu)成該集群,當(dāng)集群中任何一臺(tái)服務(wù)器宕機(jī)時(shí),應(yīng)用程序可以得到通知,及時(shí)處理相應(yīng)的事件。由于每個(gè)應(yīng)用程序需要在每臺(tái)服務(wù)器上部署,當(dāng)應(yīng)用程序的配置改變時(shí),需要修改每臺(tái)機(jī)器的配置。當(dāng)集群規(guī)模大時(shí),手工完成勞動(dòng)量會(huì)很大,這時(shí)我們就要用到ZooKeeper。
ZooKeeper提供了構(gòu)建分布式應(yīng)用時(shí)通用的底層基礎(chǔ)設(shè)施,利用這些基礎(chǔ)設(shè)施,分布式系統(tǒng)能夠?qū)崿F(xiàn)配置管理、集群管理等核心功能,這些功能可以通過對(duì)ZooKeeper提供的namespace數(shù)據(jù)模型(一種類似文件系統(tǒng)的樹形結(jié)構(gòu))進(jìn)行適當(dāng)?shù)牟僮鞫鴮?shí)現(xiàn)。Namespace數(shù)據(jù)映像模型上的操作包括創(chuàng)建、刪除、修改等,這些操作具有順序一致性、原子性、單一系統(tǒng)映像(Single System Image)、可靠性、及時(shí)性(Timeliness)等特性,同時(shí)數(shù)據(jù)模型上的每個(gè)節(jié)點(diǎn)還支持安裝觸發(fā)器(Watcher)。我們可以利用ZooKeeper提供的數(shù)據(jù)模型(namespace)保存配置文件,當(dāng)配置有變動(dòng)時(shí),相應(yīng)的應(yīng)用程序可以得到通知,及時(shí)處理配置變更。
應(yīng)用服務(wù)器(App Server)被作為ZooKeeper集群的客戶端接入集群中,同時(shí),它們又被作為用戶直接訪問的服務(wù)器。每個(gè)App Server在接入ZooKeeper集群時(shí)會(huì)向集群注冊自己,這樣可以利用ZooKeeper的集群管理功能,使得App Server能夠快速響應(yīng)集群的變化。為了達(dá)到上述目的,App Server需要實(shí)現(xiàn)一個(gè)集群管理器。集群管理器的設(shè)計(jì)非常簡單,只需要一個(gè)主要的類封裝ZooKeeper的功能即可,如圖3所示。
GroupManager在應(yīng)用程序中作為一個(gè)單獨(dú)模塊,向上提供集群管理API,應(yīng)用程序通過集群管理API可以“實(shí)時(shí)”感知集群信息,同時(shí)也“實(shí)時(shí)”上傳自己的負(fù)載信息到集群中被其他機(jī)器感知。GroupManager使用ZooKeeper對(duì)象(ZooKeeper Client)與ZooKeeper Server中對(duì)應(yīng)的znode。GroupManager在集群目錄上設(shè)置了Watcher,于是ZooKeeper向GroupManager發(fā)送節(jié)點(diǎn)變更通知,GroupManager根據(jù)集群管理對(duì)外提供的抽象功能,對(duì)事件進(jìn)行處理,向上層應(yīng)用程序提供宕機(jī)事件通知。在電視會(huì)議系統(tǒng)中,部署在多個(gè)機(jī)器上的應(yīng)用程序需要感知整個(gè)集群的狀態(tài),以及某個(gè)機(jī)器的信息,并在機(jī)器狀態(tài)變化時(shí)觸發(fā)自己的事件處理程序,所以在每個(gè)應(yīng)用程序中都有一個(gè)集群管理器的實(shí)例,應(yīng)用程序通過集群管理器訪問/管理集群。部分程序代碼如下:
Case SyncConnected:
{ switch(type)
{ case NodeChildrenChanged:
{ //集群節(jié)點(diǎn)有變化
int size=getSize();
List
If(size { //宕機(jī),找到宕機(jī)地址 List (children,curMachines); … } 在集群中部署的應(yīng)用程序都有自己的配置,有些配置是某個(gè)進(jìn)程獨(dú)有的,有些是不同物理機(jī)上所有進(jìn)程共享的。通常分布式應(yīng)用程序在多臺(tái)物理機(jī)上部署時(shí),大部分配置都是一致的,可以將一致的部分抽取出來放在ZooKeeper Server的namespace中作為共享配置,當(dāng)某個(gè)進(jìn)程修改共享配置時(shí),其他進(jìn)程會(huì)收到ZooKeeper提供的通知,做出相應(yīng)的處理。 應(yīng)用程序的配置完全由配置管理器來管理,配置管理器可以將應(yīng)用程序的配置存放在ZooKeeper znode中,并且保證對(duì)于共享配置的修改是同步的。當(dāng)應(yīng)用的某個(gè)進(jìn)程在修改共享配置時(shí),其他進(jìn)程不可讀取/修改共享配置;在進(jìn)程修改配置結(jié)束后,其他進(jìn)程會(huì)收到共享配置更新的通知,然后做相應(yīng)的處理,所以事實(shí)上配置管理器還需要一個(gè)分布式鎖Lock來完成同步,即當(dāng)應(yīng)用程序(進(jìn)程)讀共享配置時(shí),對(duì)共享配置加讀(共享)鎖,允許其他進(jìn)程加讀鎖,但不允許加寫(排他)鎖;當(dāng)進(jìn)程寫共享配置時(shí),對(duì)共享配置加寫鎖,此時(shí)不允許其他進(jìn)程加讀鎖;對(duì)共享配置訪問完成后釋放相應(yīng)的鎖。 2.3 系統(tǒng)測試 編寫TEST類對(duì)電視會(huì)議集群管理進(jìn)行測試。服務(wù)器啟動(dòng)后其配置管理模塊自動(dòng)連接到ZooKeeper Server上,然后執(zhí)行寫配置過程,測試中隨機(jī)輸入兩個(gè)數(shù)字作為配置數(shù)據(jù),寫配置時(shí),ConfigManager輸出日志表示申請到了寫鎖,然后更改了數(shù)據(jù),釋放寫鎖;接著測試讀配置功能,先申請讀鎖,讀取數(shù)據(jù),釋放讀鎖,最后打印出讀取的配置數(shù)據(jù)。系統(tǒng)測試結(jié)果如圖4所示。 3 結(jié)束語 本文設(shè)計(jì)了一種基于云計(jì)算的電視會(huì)議系統(tǒng)。該系統(tǒng)將集群管理的概念應(yīng)用到電視會(huì)議當(dāng)中,通過實(shí)際測試,系統(tǒng)運(yùn)行情況良好,符合系統(tǒng)設(shè)計(jì)的目標(biāo)。下一步還要對(duì)系統(tǒng)進(jìn)行長期的大量測試,研究并解決系統(tǒng)運(yùn)行中的偶發(fā)故障,逐步使該系統(tǒng)完善。 參考文獻(xiàn): [1] 鮑亮,陳榮.深入淺出云計(jì)算[M].清華大學(xué)出版社,2012. [2] 黎連業(yè),王安,李龍.云計(jì)算基礎(chǔ)與實(shí)用技術(shù)[M].清華大學(xué)出版社,2013. [3] 孫濤.面向云的視頻會(huì)議系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué),2011. [4] 沈旭磊,蔣瓊燕.UT斯達(dá)康基于云計(jì)算的高清視頻會(huì)議系統(tǒng)[J].電信網(wǎng)技術(shù),2011.10:83-85