張衛洪
我國鐵路綜合視頻監控系統的發展經歷了模擬、數字、高清化3個階段,形成了基于《鐵路綜合視頻監控系統技術規范》(Q/CR575—2017)[1](以下簡稱“575號文”)的鐵路綜合視頻監控系統,實現了路內視頻監控內容的互聯互通,在鐵路運輸指揮、安全生產、經營管理、公安保衛諸多方面發揮了重要的作用。隨著科學技術特別是互聯網技術的進步,云計算、分布式存儲[2]、集群控制技術飛速發展并日趨成熟,我國于2019年發布了信息技術、云計算、分布式塊存儲系統總體技術要求的國家標準[3],為云技術的發展奠定了基礎。通過云技術可以提高系統的彈性和健壯性,實現系統能力的動態擴容和冗余備份,消除系統單點故障,同時可以降低系統升級維護成本及對高性能硬件的依賴。
結合視頻監控行業發展趨勢,系統的云化及視頻數據化是未來視頻監控系統的重要發展方向,所以利用云技術來對現有的鐵路綜合視頻監控系統進行升級改造,在系統優化及技術創新方面均有重大意義。因此,本文基于575號文標準,研究采用云技術對鐵路綜合視頻監控系統進行升級改造。
鐵路綜合視頻監控系統基于575號文實現,而575號文修訂時我國云技術相關標準尚未發布,所以目前的鐵路綜合視頻監控系統沒有與云技術相關的標準支持,各廠商在實現575號文標準時或多或少存在以下不足:①冗余備份能力較弱,存在單點故障導致關聯的視頻中斷,數據丟失;②升級擴容工作量大,配置繁瑣,不能實現快速擴容;③無負載均衡能力,存在服務節點空閑、忙碌不均的情況;④對硬件性能要求較高,不能充分利用已有服務器資產;⑤上下級管理節點(MU)故障或者故障發生后的主備切換會導致上下級之間失聯;⑥存儲系統沒有規范接口協議,管理平臺與存儲系統之間不能通過標準協議對接。
本文研究重點是基于575號文標準,利用面向服務(SOA)的微服務框架,結合面向對象的分布式存儲系統來構建鐵路綜合視頻監控云系統(以下簡稱“視頻云系統”),以克服上述不足。
視頻云系統需要重點考慮系統框架、分布式緩存系統、分布式存儲及交互協議4個方面的技術選型和實現,在進行技術選型時重點選擇成熟的開源項目。
微服務框架可以利用Zookeeper[4],Dubbo和Spring Cloud[5]等開源項目來構建,其中Spring Cloud集成了一系列適用的框架,可以快速構造微服務,技術保障上也強于Dubbo和Zookeeper,所以選擇Spring Cloud微服務框架來構建視頻云系統。視頻云系統微服務架構見圖1。

圖1 視頻云系統微服務架構
在視頻云系統中,為了實現冗余備份和負載均衡等功能,微服務的服務類型、能力、狀態等信息需要在云內共享。例如,分發服務和存儲服務的能力值和實際負載值,需要寫入分布式緩存,管理服務讀取這些數據來實現負載均衡和冗余備份控制。項目中常用的分布緩存系統有Re?dis、Memcache、Ignite幾種,為了保證數據可靠性,分布式緩存需要進行集群部署,其中Ignite集群部署和集成最簡單,故選用Ignite來作為視頻云系統的分布式緩存。
傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,不能滿足大規模存儲應用的需要。分布式網絡存儲系統采用可擴展的系統結構,利用多臺存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,不但提高了系統的可靠性、可用性和存取效率,還易于擴展。分布式存儲常用的數據冗余備份模式有副本和糾刪碼[6]模式,糾刪碼模式在存儲空間利用上更高,在視頻存儲上更具優勢。同時由于對象存儲方式在實現視頻的播放控制方面更容易,所以視頻云系統選擇基于Ceph[7](分布式文件系統)的對象存儲來構建分布式存儲。
目前鐵路綜合視頻監控系統主要基于71號文[8]及575號文標準實現,故視頻云系統需要同時支持這2個版本的協議。視頻云系統中采用了分布式存儲來進行視頻數據存儲,采用標準的數據存儲接口可以提高存儲系統的通用性和可替代性。視頻云系統選擇了Amazon(S3)[9]作為對象存儲協議;同時為了實現管理單元及數據分轉發單元的冗余備份功能,需要在71號文及575號文基礎上擴充部分私有協議。
依據71號文及項目實際需求,視頻云系統劃分了網關、注冊中心、管理服務(MU)、分轉發服務(DDU)、存儲服務、配置服務及云存儲系統等多個子系統。視頻云系統部署見圖2。

圖2 視頻云系統部署
其中,網關是視頻云系統內部服務的統一訪問入口,具備系統內部服務的負載均衡訪問能力;注冊中心用于服務的自發現和離線上線監控;管理服務用于完成用戶權限管理、視頻動態路由建立、71號文及575號文中的標準接口支持等功能;分轉發服務用于視頻流的接入和轉發;存儲服務用于完成視頻數據的存儲、查詢和調取;云存儲系統為通用的面向對象的分布式存儲系統,用于視頻數據的存取。為了提高系統的可靠性和易用性,管理單元、分轉發單元、存儲單元均采用集群方式部署,支持冗余備份及動態擴容。
為了簡化系統配置,實現冗余備份、動態路由等功能,需要對攝像機、分轉發服務、存儲服務進行邏輯分組,視頻流的播放和存儲等功能將使用相同組內的服務來支撐。進行擴容時,只需要將所需服務注冊到需要擴容的分組內,即可實現動態擴容。
在視頻系統中,視頻路由是指視頻從攝像機或者其他視頻平臺,經過接入服務、分轉發服務或者其他中轉服務到達客戶端,或者存儲服務所經過的服務鏈路。如果采用固定的路由方式,路由鏈路中的某個服務失效,將導致視頻無法觀看和存儲,而解決這一問題的方式就是動態路由機制,即播放視頻時動態查找接入及分轉發服務,用于實現視頻的接入和轉發。若某個服務不可用,將獲取新的可用服務來保證業務不中斷。視頻云系統的動態路由生成流程見圖3。

圖3 視頻云系統的動態路由生成流程
鐵路綜合視頻系統采用了多級架構,通過管理節點(MU)實現上下級的級聯,管理節點故障將導致該節點下所有視頻資源無法調取。視頻云系統采用了多管理節點冗余備份方式,保證管理節點的持續可用。多個管理節點通過競爭來獲取Master(主管理)角色,獲取到Master角色的管理節點將負責上下級級聯的工作;沒有獲取到Master角色的管理節點為Slave(從管理)角色,Slave角色定期檢查Master信息,如果檢測到Master離線,那么Slave角色將再次競爭Master角色來實現上下級級聯。
分轉發單元用于視頻流的接入和分發,分轉發單元失效后,播放客戶端或者存儲服務將會檢測到流中斷,客戶端及存儲服務將會發送重播請求。由于分轉發服務失效,之前建立的動態路由也將失效,管理節點收到重播請求將會生成新的路由,使用新的分轉發服務來提供視頻分發,從而實現分轉發服務的冗余備份。
存儲單元用于將視頻數據存儲到云存儲中,注冊中心檢測到存儲單元離線后將會向管理節點發送離線信息,管理節點將回收該存儲服務的存儲計劃,并將回收的存儲計劃重新分發給在線的存儲服務,從而實現存儲服務的冗余備份。
將視頻數據采用對象方式存儲[10]到分布式云存儲系統中,需要解決視頻上傳、下載、拖動、快進/快退問題。為了快速響應用戶的操作,每個視頻對象時長不宜過長,本系統中定義為5 s;同時,為了實現拖動快進等功能,需要為視頻對象建立索引信息。視頻云系統采用了二級索引方式建立索引:一級為全局索引,用于記錄每一個視頻對象的時長信息和二級索引名稱;二級索引記錄了每個視頻對象的必要信息,包括時長及每幀位置信息等。視頻對象存儲方式見圖4。

圖4 視頻對象存儲方式
存儲服務獲取視頻流后將在本地進行緩存,緩存5 s后生成該視頻片段的索引信息,將索引信息及視頻片段通過S3接口上傳至云存儲系統,同時修改該視頻的全局索引信息。視頻播放時,先獲取該視頻的全局索引,查詢到播放時間點的視頻二級索引,然后下載對應的視頻數據,發送給播放端進行播放。
為了提升鐵路綜合視頻系統在冗余備份、負載均衡、升級擴容、視頻數據可靠性等方面的能力,研究了基于微服務架構、分布式緩存、云存儲技術的視頻云系統,引入視頻動態路由機制,并對管理節點、分轉發節點、存儲節點進行了集群化設計,實現了服務的冗余備份,并簡化了升級擴容工作;通過S3接口集成了Ceph云存儲系統,保證了視頻數據的可靠存儲;另外,考慮鐵路視頻監控系統的現狀,視頻云系統兼容了71號文和575號文標準協議,與現有系統能夠無縫對接。目前,視頻云系統已經通過了CRCC認證,并在路內多條線路及部分區域節點上線使用,充分說明了利用云可以對路內視頻監控系統進行全面的優化升級。該項研究也為鐵路綜合視頻監控系統相關標準對云技術的支持提供參考。