摘 要:針對傳統(tǒng)的多媒體發(fā)布系統(tǒng)的種種劣勢,提出一種基于嵌入式Linux的內(nèi)容分發(fā)系統(tǒng)。介紹了這種系統(tǒng)的終端架構(gòu)及文件分發(fā)策略并詳細(xì)闡述了終端軟件在線升級技術(shù)。
關(guān)鍵詞:內(nèi)容分發(fā);文件分發(fā);在線升級
中圖分類號:TP393
傳統(tǒng)的多媒體信息發(fā)布主要采用兩種方式:第一種采用人工放置、播放預(yù)錄好的多媒體信息,第二種利用IP網(wǎng)絡(luò)實時進(jìn)行全網(wǎng)廣播。其中第一種方式管理十分復(fù)雜,播放內(nèi)容管理靈活性很差,而第二種部署成本較高,實時廣播也對帶寬有很高的要求。內(nèi)容分發(fā)系統(tǒng)(contented livery net work,CDN)利用了網(wǎng)絡(luò)相對空閑的時段將需要使用的音視頻或文字信息分發(fā)并存儲到終端設(shè)備,終端設(shè)備根據(jù)系統(tǒng)發(fā)送的控制信息按頭端要求播放內(nèi)容,同時也可以播放系統(tǒng)臨時發(fā)送的即時信息。這種方案解決了實時廣播大量消耗網(wǎng)絡(luò)資源的問題,同時也充分發(fā)揮了網(wǎng)絡(luò)的可管理,靈活,實時,互動等優(yōu)勢。然而這種系統(tǒng)和其他系統(tǒng)一樣,在使用過程中可能會需要增加某些功能或修補一些bug。從成本角度考慮,對于大量的遠(yuǎn)程終端的版本更新只能通過在線升級來實現(xiàn)。軟件在線升級能大大提高產(chǎn)品的實用性以及使用周期。
1 內(nèi)容分發(fā)系統(tǒng)終端架構(gòu)
數(shù)字內(nèi)容分發(fā)系統(tǒng)終端采用以BroadcomBCM7230為核心的平臺并搭載Linux操作系統(tǒng)。系統(tǒng)功能模塊架構(gòu)如圖1所示。其中XMPPClient承擔(dān)終端與頭端及其他終端之間的通訊。通訊管理模塊主要功能是接收XMPPClient指令,進(jìn)行終端通訊的封裝和解析,轉(zhuǎn)化為本地消息格式,轉(zhuǎn)發(fā)給主控模塊并且同時接收主控模塊的消息,封裝后發(fā)送給XMPPClient。
圖1 系統(tǒng)功能模塊架構(gòu)圖
主控模塊是終端的控制和調(diào)度中心,根據(jù)從通訊管理模塊收到的指令進(jìn)行終端工作的控制和任務(wù)調(diào)度。它的主要功能是啟動相應(yīng)功能模塊、任務(wù)分發(fā)、接受和采集終端各功能模塊的通訊請求和信息,轉(zhuǎn)發(fā)給通訊管理模塊。
播放管理模塊根據(jù)播放策略指示,按照樣式要求播放展示媒資文件。存儲管理模塊根據(jù)部署條件,管理媒資、程序以及其他下載文件并將文件分發(fā)到指定目錄,且可按照指令刪除或移動文件。監(jiān)控管理模塊根據(jù)指令消息,執(zhí)行相關(guān)的終端控制命令,接受檢測指令消息,調(diào)用相關(guān)程序,反饋相關(guān)信息。狀態(tài)集和指令集在儲存和執(zhí)行。下載管理模塊根據(jù)下載指令消息,調(diào)用下載協(xié)議到指定地址下載文件。升級管理模塊根據(jù)升級指令信息,對升級文件進(jìn)行操作,或是根據(jù)指令恢復(fù)之前版本。
2 文件分發(fā)策略
圖2 系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖
如圖2所示,每個終端根據(jù)頭端指派位于網(wǎng)絡(luò)中的某一層。除了最底層的終端外,每一終端都連接著下一層的多個終端,稱之為組。該上層終端稱之為組長,其它的所有下層終端均為組員。第一層也為一組,該組組長為頭端服務(wù)器(CoreServer)。
所有的分發(fā)內(nèi)容均由頭端控制,包括獲取的內(nèi)容、獲取的時間,即頭端通知每一臺終端各自的需獲取的內(nèi)容,無論該終端位于哪一層。內(nèi)容分發(fā)時分發(fā)到各終端的內(nèi)容完全一樣。
系統(tǒng)包括P2P文件分發(fā)服務(wù)器和FTP補償服務(wù)器兩種類型的服務(wù)器。P2P文件分發(fā)服務(wù)器存儲需分發(fā)的源文件以及拆分后的小文件,其承擔(dān)文件分發(fā)中的小文件的分發(fā)。FTP補償服務(wù)器只存儲需分發(fā)的源文件,提供按塊獲取的FTP服務(wù)。
針對選出的終端集合,首先判斷終端數(shù)是否超過頭端的并發(fā)下載數(shù)。若不超過,則選擇這些終端從頭端直接FTP下載大文件;若超過,則進(jìn)行分層分組,構(gòu)建P2P層次網(wǎng)絡(luò),進(jìn)行內(nèi)容分發(fā)。
3 終端軟件在線升級方案
一般來說升級需要滿足兩方面的需要:(1)升級過程中的保護(hù),如意外斷電,或升級失敗后如何操作。(2)保證升級程序的正確性,防止錯誤程序的運行。升級模塊的功能如表1所示。
功能功能說明
命令解析解析服務(wù)器端軟件升級命令
升級策略強制升級根據(jù)服務(wù)器端指令立即進(jìn)行升級。
定時升級根據(jù)服務(wù)器端指令指定的時間,進(jìn)行定時升級。
軟件包下載下載待升級的軟件包
軟件包解壓待升級軟件包解壓
新版本啟用啟用升級后的軟件
表1 升級模塊功能
內(nèi)容分發(fā)系統(tǒng)終端NANDFlash中的/mnt/app/中有兩份程序文件,目錄分別為images0和images1,出廠時兩個目錄下的文件是相同的。終端開機啟動后會根據(jù)/root/app_cfg.sh文件來確定啟動那個版本的程序。如果/root/app_cfg.sh指示使用A版本,則終端首先啟動A版本,如果A版本啟動后程序異常退出,則會嘗試啟動B版本。
錯誤號說明
-1服務(wù)器端命令錯誤
-100無法找到下載的升級包
-101當(dāng)前程序版本號大于升級程序
-102MD5驗證失敗
-103解壓失敗
-104無法獲取當(dāng)前程序版本信息
-105無法打開下載目錄
表2 升級錯誤說明
頭端通過XMPPClient通知終端升級,升級指令采用JSON格式,如下所示:{'session_id':'123456','content_type':'request','reply':'true','module':'terminal.update','invoke':'start'}。升級包軟件將通過下載模塊下載并存儲到指定目錄。下載完成后先采用MD5校驗機制并備份原有程序。運行Update程序之前,需校驗Update程序的簽名,防止違法運行非法的程序。Update程序?qū)⑴袛喈?dāng)前終端的版本號,如果版本號大于下載升級程序文件中的版本號,則終止升級。Update程序通過/root/app_cfg.sh判斷當(dāng)前終端版本,比如當(dāng)前運行A版本,則將升級文件復(fù)制到/mnt/app/images1目錄下,并將/root/app_cfg.sh中的版本指示改為B版本,升級成功后,終端將運行B版本也就是升級后的版本,
并上報頭端{(lán)'session_id':'123456','content_type':'response','reply':'1','module':'terminal.update','invoke':'start','errno':'0'}。若升級失敗,則上報頭端,錯誤號如表2所示,終端仍然會運行之前版本,頭端將根據(jù)實際情況再次升級。
另外為了安全性,升級包文件需要壓縮后加密,Update程序負(fù)責(zé)解密和解壓以防止升級包被非法替換。
4 結(jié)束語
隨著網(wǎng)絡(luò)信息化的高速發(fā)展,內(nèi)容分發(fā)系統(tǒng)在各方面都將有廣泛的應(yīng)用前景。對于廣泛分布的大量終端設(shè)備來說,要延長產(chǎn)品的使用周期,在線升級是必然的選擇。本文介紹的內(nèi)容分發(fā)系統(tǒng)的在線升級方案簡潔且易于實現(xiàn)。
參考文獻(xiàn):
[1]徐寶成,王磊.基于嵌入式終端的信息交互平臺的設(shè)計與實現(xiàn)[J].計算機應(yīng)用,2007,27(5):1271-1273.
[2]趙珂,鄭尚輝,沈洪驥.一種分布式系統(tǒng)自動升級的方法[J].計算機系統(tǒng)應(yīng)用,2010,19(10):214-216.