張衛(wèi)洪
我國鐵路綜合視頻監(jiān)控系統(tǒng)的發(fā)展經(jīng)歷了模擬、數(shù)字、高清化3個階段,形成了基于《鐵路綜合視頻監(jiān)控系統(tǒng)技術(shù)規(guī)范》(Q/CR575—2017)[1](以下簡稱“575號文”)的鐵路綜合視頻監(jiān)控系統(tǒng),實現(xiàn)了路內(nèi)視頻監(jiān)控內(nèi)容的互聯(lián)互通,在鐵路運輸指揮、安全生產(chǎn)、經(jīng)營管理、公安保衛(wèi)諸多方面發(fā)揮了重要的作用。隨著科學(xué)技術(shù)特別是互聯(lián)網(wǎng)技術(shù)的進步,云計算、分布式存儲[2]、集群控制技術(shù)飛速發(fā)展并日趨成熟,我國于2019年發(fā)布了信息技術(shù)、云計算、分布式塊存儲系統(tǒng)總體技術(shù)要求的國家標(biāo)準(zhǔn)[3],為云技術(shù)的發(fā)展奠定了基礎(chǔ)。通過云技術(shù)可以提高系統(tǒng)的彈性和健壯性,實現(xiàn)系統(tǒng)能力的動態(tài)擴容和冗余備份,消除系統(tǒng)單點故障,同時可以降低系統(tǒng)升級維護成本及對高性能硬件的依賴。
結(jié)合視頻監(jiān)控行業(yè)發(fā)展趨勢,系統(tǒng)的云化及視頻數(shù)據(jù)化是未來視頻監(jiān)控系統(tǒng)的重要發(fā)展方向,所以利用云技術(shù)來對現(xiàn)有的鐵路綜合視頻監(jiān)控系統(tǒng)進行升級改造,在系統(tǒng)優(yōu)化及技術(shù)創(chuàng)新方面均有重大意義。因此,本文基于575號文標(biāo)準(zhǔn),研究采用云技術(shù)對鐵路綜合視頻監(jiān)控系統(tǒng)進行升級改造。
鐵路綜合視頻監(jiān)控系統(tǒng)基于575號文實現(xiàn),而575號文修訂時我國云技術(shù)相關(guān)標(biāo)準(zhǔn)尚未發(fā)布,所以目前的鐵路綜合視頻監(jiān)控系統(tǒng)沒有與云技術(shù)相關(guān)的標(biāo)準(zhǔn)支持,各廠商在實現(xiàn)575號文標(biāo)準(zhǔn)時或多或少存在以下不足:①冗余備份能力較弱,存在單點故障導(dǎo)致關(guān)聯(lián)的視頻中斷,數(shù)據(jù)丟失;②升級擴容工作量大,配置繁瑣,不能實現(xiàn)快速擴容;③無負載均衡能力,存在服務(wù)節(jié)點空閑、忙碌不均的情況;④對硬件性能要求較高,不能充分利用已有服務(wù)器資產(chǎn);⑤上下級管理節(jié)點(MU)故障或者故障發(fā)生后的主備切換會導(dǎo)致上下級之間失聯(lián);⑥存儲系統(tǒng)沒有規(guī)范接口協(xié)議,管理平臺與存儲系統(tǒng)之間不能通過標(biāo)準(zhǔn)協(xié)議對接。
本文研究重點是基于575號文標(biāo)準(zhǔn),利用面向服務(wù)(SOA)的微服務(wù)框架,結(jié)合面向?qū)ο蟮姆植际酱鎯ο到y(tǒng)來構(gòu)建鐵路綜合視頻監(jiān)控云系統(tǒng)(以下簡稱“視頻云系統(tǒng)”),以克服上述不足。
視頻云系統(tǒng)需要重點考慮系統(tǒng)框架、分布式緩存系統(tǒng)、分布式存儲及交互協(xié)議4個方面的技術(shù)選型和實現(xiàn),在進行技術(shù)選型時重點選擇成熟的開源項目。
微服務(wù)框架可以利用Zookeeper[4],Dubbo和Spring Cloud[5]等開源項目來構(gòu)建,其中Spring Cloud集成了一系列適用的框架,可以快速構(gòu)造微服務(wù),技術(shù)保障上也強于Dubbo和Zookeeper,所以選擇Spring Cloud微服務(wù)框架來構(gòu)建視頻云系統(tǒng)。視頻云系統(tǒng)微服務(wù)架構(gòu)見圖1。
圖1 視頻云系統(tǒng)微服務(wù)架構(gòu)
在視頻云系統(tǒng)中,為了實現(xiàn)冗余備份和負載均衡等功能,微服務(wù)的服務(wù)類型、能力、狀態(tài)等信息需要在云內(nèi)共享。例如,分發(fā)服務(wù)和存儲服務(wù)的能力值和實際負載值,需要寫入分布式緩存,管理服務(wù)讀取這些數(shù)據(jù)來實現(xiàn)負載均衡和冗余備份控制。項目中常用的分布緩存系統(tǒng)有Re?dis、Memcache、Ignite幾種,為了保證數(shù)據(jù)可靠性,分布式緩存需要進行集群部署,其中Ignite集群部署和集成最簡單,故選用Ignite來作為視頻云系統(tǒng)的分布式緩存。
傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù),存儲服務(wù)器成為系統(tǒng)性能的瓶頸,不能滿足大規(guī)模存儲應(yīng)用的需要。分布式網(wǎng)絡(luò)存儲系統(tǒng)采用可擴展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔(dān)存儲負荷,利用位置服務(wù)器定位存儲信息,不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴展。分布式存儲常用的數(shù)據(jù)冗余備份模式有副本和糾刪碼[6]模式,糾刪碼模式在存儲空間利用上更高,在視頻存儲上更具優(yōu)勢。同時由于對象存儲方式在實現(xiàn)視頻的播放控制方面更容易,所以視頻云系統(tǒng)選擇基于Ceph[7](分布式文件系統(tǒng))的對象存儲來構(gòu)建分布式存儲。
目前鐵路綜合視頻監(jiān)控系統(tǒng)主要基于71號文[8]及575號文標(biāo)準(zhǔn)實現(xiàn),故視頻云系統(tǒng)需要同時支持這2個版本的協(xié)議。視頻云系統(tǒng)中采用了分布式存儲來進行視頻數(shù)據(jù)存儲,采用標(biāo)準(zhǔn)的數(shù)據(jù)存儲接口可以提高存儲系統(tǒng)的通用性和可替代性。視頻云系統(tǒng)選擇了Amazon(S3)[9]作為對象存儲協(xié)議;同時為了實現(xiàn)管理單元及數(shù)據(jù)分轉(zhuǎn)發(fā)單元的冗余備份功能,需要在71號文及575號文基礎(chǔ)上擴充部分私有協(xié)議。
依據(jù)71號文及項目實際需求,視頻云系統(tǒng)劃分了網(wǎng)關(guān)、注冊中心、管理服務(wù)(MU)、分轉(zhuǎn)發(fā)服務(wù)(DDU)、存儲服務(wù)、配置服務(wù)及云存儲系統(tǒng)等多個子系統(tǒng)。視頻云系統(tǒng)部署見圖2。
圖2 視頻云系統(tǒng)部署
其中,網(wǎng)關(guān)是視頻云系統(tǒng)內(nèi)部服務(wù)的統(tǒng)一訪問入口,具備系統(tǒng)內(nèi)部服務(wù)的負載均衡訪問能力;注冊中心用于服務(wù)的自發(fā)現(xiàn)和離線上線監(jiān)控;管理服務(wù)用于完成用戶權(quán)限管理、視頻動態(tài)路由建立、71號文及575號文中的標(biāo)準(zhǔn)接口支持等功能;分轉(zhuǎn)發(fā)服務(wù)用于視頻流的接入和轉(zhuǎn)發(fā);存儲服務(wù)用于完成視頻數(shù)據(jù)的存儲、查詢和調(diào)?。辉拼鎯ο到y(tǒng)為通用的面向?qū)ο蟮姆植际酱鎯ο到y(tǒng),用于視頻數(shù)據(jù)的存取。為了提高系統(tǒng)的可靠性和易用性,管理單元、分轉(zhuǎn)發(fā)單元、存儲單元均采用集群方式部署,支持冗余備份及動態(tài)擴容。
為了簡化系統(tǒng)配置,實現(xiàn)冗余備份、動態(tài)路由等功能,需要對攝像機、分轉(zhuǎn)發(fā)服務(wù)、存儲服務(wù)進行邏輯分組,視頻流的播放和存儲等功能將使用相同組內(nèi)的服務(wù)來支撐。進行擴容時,只需要將所需服務(wù)注冊到需要擴容的分組內(nèi),即可實現(xiàn)動態(tài)擴容。
在視頻系統(tǒng)中,視頻路由是指視頻從攝像機或者其他視頻平臺,經(jīng)過接入服務(wù)、分轉(zhuǎn)發(fā)服務(wù)或者其他中轉(zhuǎn)服務(wù)到達客戶端,或者存儲服務(wù)所經(jīng)過的服務(wù)鏈路。如果采用固定的路由方式,路由鏈路中的某個服務(wù)失效,將導(dǎo)致視頻無法觀看和存儲,而解決這一問題的方式就是動態(tài)路由機制,即播放視頻時動態(tài)查找接入及分轉(zhuǎn)發(fā)服務(wù),用于實現(xiàn)視頻的接入和轉(zhuǎn)發(fā)。若某個服務(wù)不可用,將獲取新的可用服務(wù)來保證業(yè)務(wù)不中斷。視頻云系統(tǒng)的動態(tài)路由生成流程見圖3。
圖3 視頻云系統(tǒng)的動態(tài)路由生成流程
鐵路綜合視頻系統(tǒng)采用了多級架構(gòu),通過管理節(jié)點(MU)實現(xiàn)上下級的級聯(lián),管理節(jié)點故障將導(dǎo)致該節(jié)點下所有視頻資源無法調(diào)取。視頻云系統(tǒng)采用了多管理節(jié)點冗余備份方式,保證管理節(jié)點的持續(xù)可用。多個管理節(jié)點通過競爭來獲取Master(主管理)角色,獲取到Master角色的管理節(jié)點將負責(zé)上下級級聯(lián)的工作;沒有獲取到Master角色的管理節(jié)點為Slave(從管理)角色,Slave角色定期檢查Master信息,如果檢測到Master離線,那么Slave角色將再次競爭Master角色來實現(xiàn)上下級級聯(lián)。
分轉(zhuǎn)發(fā)單元用于視頻流的接入和分發(fā),分轉(zhuǎn)發(fā)單元失效后,播放客戶端或者存儲服務(wù)將會檢測到流中斷,客戶端及存儲服務(wù)將會發(fā)送重播請求。由于分轉(zhuǎn)發(fā)服務(wù)失效,之前建立的動態(tài)路由也將失效,管理節(jié)點收到重播請求將會生成新的路由,使用新的分轉(zhuǎn)發(fā)服務(wù)來提供視頻分發(fā),從而實現(xiàn)分轉(zhuǎn)發(fā)服務(wù)的冗余備份。
存儲單元用于將視頻數(shù)據(jù)存儲到云存儲中,注冊中心檢測到存儲單元離線后將會向管理節(jié)點發(fā)送離線信息,管理節(jié)點將回收該存儲服務(wù)的存儲計劃,并將回收的存儲計劃重新分發(fā)給在線的存儲服務(wù),從而實現(xiàn)存儲服務(wù)的冗余備份。
將視頻數(shù)據(jù)采用對象方式存儲[10]到分布式云存儲系統(tǒng)中,需要解決視頻上傳、下載、拖動、快進/快退問題。為了快速響應(yīng)用戶的操作,每個視頻對象時長不宜過長,本系統(tǒng)中定義為5 s;同時,為了實現(xiàn)拖動快進等功能,需要為視頻對象建立索引信息。視頻云系統(tǒng)采用了二級索引方式建立索引:一級為全局索引,用于記錄每一個視頻對象的時長信息和二級索引名稱;二級索引記錄了每個視頻對象的必要信息,包括時長及每幀位置信息等。視頻對象存儲方式見圖4。
圖4 視頻對象存儲方式
存儲服務(wù)獲取視頻流后將在本地進行緩存,緩存5 s后生成該視頻片段的索引信息,將索引信息及視頻片段通過S3接口上傳至云存儲系統(tǒng),同時修改該視頻的全局索引信息。視頻播放時,先獲取該視頻的全局索引,查詢到播放時間點的視頻二級索引,然后下載對應(yīng)的視頻數(shù)據(jù),發(fā)送給播放端進行播放。
為了提升鐵路綜合視頻系統(tǒng)在冗余備份、負載均衡、升級擴容、視頻數(shù)據(jù)可靠性等方面的能力,研究了基于微服務(wù)架構(gòu)、分布式緩存、云存儲技術(shù)的視頻云系統(tǒng),引入視頻動態(tài)路由機制,并對管理節(jié)點、分轉(zhuǎn)發(fā)節(jié)點、存儲節(jié)點進行了集群化設(shè)計,實現(xiàn)了服務(wù)的冗余備份,并簡化了升級擴容工作;通過S3接口集成了Ceph云存儲系統(tǒng),保證了視頻數(shù)據(jù)的可靠存儲;另外,考慮鐵路視頻監(jiān)控系統(tǒng)的現(xiàn)狀,視頻云系統(tǒng)兼容了71號文和575號文標(biāo)準(zhǔn)協(xié)議,與現(xiàn)有系統(tǒng)能夠無縫對接。目前,視頻云系統(tǒng)已經(jīng)通過了CRCC認證,并在路內(nèi)多條線路及部分區(qū)域節(jié)點上線使用,充分說明了利用云可以對路內(nèi)視頻監(jiān)控系統(tǒng)進行全面的優(yōu)化升級。該項研究也為鐵路綜合視頻監(jiān)控系統(tǒng)相關(guān)標(biāo)準(zhǔn)對云技術(shù)的支持提供參考。