余俊 萬喬喬 范志英



摘 要:視頻會議系統跨域分級部署存在終端分散、分級管理等缺點,為解決終端軟件無法自動升級,升級效率低下等問題,提出了一種視頻會議系統跨域分布式升級方法。首先,基于MD5算法生成軟件版本摘要文件,通過軟件版本摘要文件的對比,進行差異化升級,減少升級內容;其次,將分布式計算融入升級過程中,解決視頻會議系統的軟件跨域同步問題,實現一處發布、全域升級,以提升視頻會議系統升級效率。文章闡述了該方法的流程設計及基于該方法設計實現的分布式升級服務和客戶端。此方法可適用于常見的跨域軟件系統。
關鍵詞:視頻會議系統;軟件升級;MD5;分布式計算;分布式協同;訂閱發布
中圖分類號:TP393文獻標識碼:A文章編號:2095-1302(2020)02-00-03
0 引 言
視頻會議系統被廣泛應用于政府、軍隊、企業、醫療、通信、交通等領域,在持續提升用戶溝通效率、縮減企業差旅費用成本、提高管理成效等方面具有得天獨厚的優勢[1]。
在某些特殊領域,跨域的視頻會議系統顯得尤為重要,不同于一般企業內部的視頻會議,一方面,對實時性、可靠性、穩定性的要求更高,一旦正式開通并提供服務,不允許服務中斷或性能下降的問題出現;另一方面,系統本身規模較大,節點成千上萬,并發的數據通信量大,且需根據樹形節點特征跨域分布,分域提供服務。
利用傳統的軟件在線升級方法難以滿足跨域視頻會議系統的性能要求,因此,本文首次提出了一種實時、高效、可靠的針對跨域視頻會議系統的軟件升級方法。
1 跨域視頻會議系統介紹
視頻會議系統基于C/S架構,以跨平臺軟件服務化框架為基礎,采用開放業務平臺與服務器/視頻業務客戶端方式部署,各視頻業務終端向服務器進行認證和注冊,具有視頻會議、視頻指揮、文件傳輸、發送短消息等業務功能,業務可按需定制,具有高度靈活性和擴展性。
在某些特殊行業,用戶編制為樹形結構,有著嚴格的層級關系,僅在中心部署一個服務器無法滿足用戶層次化的視頻業務需求。因此,需要對視頻會議系統進行分域部署,在頂層節點部署一級服務中心,在各分域節點部署二級服務中心,各視頻業務終端向其歸屬域服務器注冊,實現視頻業務。
跨域部署后,視頻業務客戶端分散在不同的域,部署在各個地方,且形態多樣,人工升級維護極其不便,為了實現跨域視頻業務系統客戶端的自動在線升級、在線更新,必須實現一種跨域的在線升級方法,在某個域中進行版本發布,通過分布式同步技術實現全域的視頻業務客戶端版本信息同步。
2 傳統的在線升級流程
傳統的軟件在線升級主要研究方向集中在軟件系統本身,力圖通過提高軟件系統自身的容錯能力來實現版本同步、接口翻譯、錯誤檢查和自動回退等功能[2]。系統在線升級的方法加大了軟件系統的復雜程度,與視頻會議系統的高可靠性和實時性相矛盾。傳統方法的理想升級過程如圖1所示。
同時,考慮到傳統軟件在線升級方法大部分是針對嵌入式設備,按照傳輸升級固件途徑,主要方法分為以下幾種:
(1)可通過串口RS 232/RS 485、CAN總線傳輸信息,但傳輸距離受限,實際應用意義不大[3];
(2)若使用SD卡或U盤傳輸信息,那么對于分布較廣的終端來說,需要隨身帶U盤或SD卡去現場才能升級[4],對于遠程升級而言無實際意義;
(3)無線網絡傳輸過程引導程序復雜,代碼量大,不適用于傳輸較大的固件[5]。
以上各方法均難以滿足視頻會議系統跨域、終端數量多、終端分布廣、遠程升級等方面對系統升級的要求,且升級可靠性不高,容易造成資源浪費。
3 跨域在線升級方案設計
3.1 流程設計
由于跨域的視頻會議系統是客戶端/服務器結構模式[6],相應的在線升級算法也包括服務端和客戶端兩部分,并且支持多軟件同時在線升級。
在服務端,此算法首先創建升級文件根目錄,存放待升級客戶端軟件版本,利用MD5算法對客戶端軟件安裝后的目錄下所有文件包括子目錄下的所有文件進行遞歸遍歷[7],遞歸遍歷所有節點;針對節點遍歷過程,創建軟件版本摘要文件,標識每一個節點信息及文件信息,供客戶端使用;將此算法用C++封裝成服務,并以命令的形式創建觸發器,最后啟動服務即可實現在線升級服務端。服務端算法流程如圖2所示。
客戶端首次運行時,將提示是否做全面升級,并遍歷本地升級目錄,創建本地軟件校驗和列表,然后以消息中間件的形式從服務端獲取校驗和列表,對比這兩個校驗和列表,若不相同,則刪除出現在本地校驗和列表但不在服務器校驗和列表中的文件,下載出現在服務器校驗和列表但不出現在本地校驗和列表中的文件。客戶端算法流程如圖3所示。
算法在性能方面的優勢如下:
(1)節省帶寬,自動檢查客戶的軟件版本,并以壓縮形式下載僅需要更新的應用組件;
(2)安全性高,增加了防火墻服務,只有授權的客戶才能下載升級軟件,且能讓客戶與服務器通過防火墻安全地進行通信,數據可雙向通信,也可使用公鑰證書進行完全加密。
3.2 升級服務設計
跨域的在線升級服務共設計為五個模塊,分別為軟件版本庫管理、校驗和列表管理、域內更新推送、跨域分布式同步、日志收集,如圖4所示。
軟件版本庫管理:軟件版本信息管理包括軟件版本的導入和檢出,內部保存每個對象的標識及服務器的運行地址,并對外提供統一的軟件版本檢索接口,以滿足客戶端對軟件各階段版本的更新需求。
校驗和列表文件管理:提供基于MD5算法校驗和列表文件計算服務,管理校驗和列表文件,根據校驗和列表文件對軟件版本庫建立映射關系。一方面,每當軟件版本有更新時,便自動斷開服務,重新計算數據文件,生成新的文件列表;另一方面,每當客戶端進行軟件版本請求時,負責對比客戶端軟件版本校驗和文件,完成差異化模塊提取。
跨域分布式同步:基于ZooKeeper分布式同步中間件,實現域間的軟件版本同步,首先通過同步版本校驗和列表文件,然后基于校驗和文件實現差異化更新,實現僅需一個域更新版本,便可全域版本同步的功能。
域內更新推送:此模塊負責實現本域內客戶端用戶的軟件版本升級,基于一種消息訂閱發布模式[8],實現版本校驗和文件推送和拉取。客戶端實現更新主要有兩種方式,一種是版本推送模式,服務器有版本更新時,向各訂閱客戶端主動推送版本校驗和文件及在線升級數據文件;另一種是版本拉取模式,客戶端主動向服務器發送版本校驗和文件,檢查是否有更新,若有更新,服務器向客戶端發送在線升級文件,完成更新。
日志收集:實時收集在線升級相關的各種日志信息,包括版本更新信息、跨域版本同步信息、域內客戶端在線升級信息等,對日志進行自動分析,并對出現錯誤的情況進行告警提示。
3.3 跨域版本信息同步實現
ZooKeeper是Apache Hadoop的一個子項目,主要用來解決分布式應用中遇到的一些數據管理和同步問題[9],跨域的版本信息同步基于ZooKeeper,在跨域在線升級服務之間建立一條數據同步鏈,由于域與域之間采用骨干通信網絡,多為光纖和有線網絡,足以支撐一條數據同步鏈,因此在數據同步鏈技術上實現版本校驗和數據同步,通過差異化對比實現軟件版本同步,進而完成跨域版本信息同步,如圖5所示。
基于數據同步鏈,只需要在數據鏈中某一個升級服務節點部署軟件版本,然后通過分布式數據同步技術,各級服務器間接完成軟件版本同步,所有客戶端通過訂閱-發布模式完成軟件的在線升級,對大容量的視頻會議系統來說實現了“一次部署,全面升級”的目標,不僅減少了人為誤差,且靈活高效。
3.4 單域客戶端在線升級實現
單域客戶端節點數量較多,無法針對每個客戶端提供單獨的服務進行軟件升級,因此采用高性能消息中間件實現,基于消息訂閱發布模型,將軟件版本信息發布到消息中間件,由消息中間件負責將信息推送到所有訂閱客戶端,實現各客戶端軟件的升級更新,如圖6所示。
采用訂閱發布的模型進行軟件更新升級具有以下特點:
(1)在線升級的各服務模塊及其所在服務器與視頻會議各終端之間完全解耦和;
(2)在線升級服務器發布的單個事件可被發送到多個訂閱者,特別適合視頻會議系統終端用戶數較多的情形;
(3)在線升級服務的多個實例可在不同機器上運行,使得處理負載分攤到許多CUP上。
4 結 語
跨域信息系統客戶端軟件的實時更新與維護較為繁瑣,本文提出了一種新的在線升級算法,有效規避了傳統在線升級方法的不足;并充分利用訂閱發布消息模型、分布式數據管理、分布式數據同步等技術[10],設計了一種跨域的信息系統在線升級方案,特別適合于分布范圍廣、系統容量大、并發程度高的系統,且實時性、高效性、可靠性強,目前已成功應用于某大型視頻會議系統中,具有一定的推廣價值。
參 考 文 獻
[1]雷穎思.視頻會議系統技術及發展[J].計算機工程應用技術,2017(11):88-90.
[2]焦誠,李英.衛星導航地面控制系統在線升級與驗證方法[J].現代導航,2016,7(2):94-98.
[3]韋士雄.煤炭信息采集系統的信號處理和在線升級研究[D].濟南:山東大學,2016.
[4]李敏,侯亞玲,劉穎.基于SD卡的FAT32文件系統設計與實現[J].物聯網技術,2017,7(7):96-98.
[5]張萌.基于ISP/IAP和CAN總線的遠程升級系統研制[D].青島:中國海洋大學,2013.
[6]劉勝娃,李衛,張越.長慶鉆井公司統一通信平臺的設計與實現[J].物聯網技術,2017,7(4):62-63.
[7]李韓芬,張家鳳,陳瑩.MD5軟件在版本控制中的應用研究[J].無線互聯科技,2016(17):43-45.
[8]鄭鵬怡,張振國,袁戰軍.基于發布訂閱機制的實時中間件的設計與實現[J].計算機應用與軟件,2018(2):44-47.
[9]周繼鋒,馮鉆優,陳勝尊,等.分布式數據庫架構企業實踐[M].北京:電子工業出版社,2017.
[10]劉春漲,王麗穎,靳慶庚,等.基于Paxos算法的分布式計算模型探究[J].物聯網技術,2016,6(4):56-57.