白小軍,赫 磊,吳夫丹
(西安工業(yè)大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710032)
電視發(fā)射臺集中監(jiān)控系統(tǒng)設(shè)計
白小軍,赫 磊,吳夫丹
(西安工業(yè)大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710032)
針對電視發(fā)射臺設(shè)備監(jiān)控的實(shí)際需求,提出了基于Web的監(jiān)控方案,討論了監(jiān)控系統(tǒng)的體系結(jié)構(gòu)及各層的實(shí)現(xiàn)方法,解決了多種類型設(shè)備的集中監(jiān)控以及細(xì)粒度訪問控制等問題。實(shí)踐證明,該方案能滿足大型電視發(fā)射臺設(shè)備集中監(jiān)控的要求。
電視發(fā)射機(jī);設(shè)備監(jiān)控;軟件體系結(jié)構(gòu);訪問控制
電視發(fā)射機(jī)是電視廣播的核心設(shè)備,為保證節(jié)目的正常播出,必須提供一種安全的手段,方便監(jiān)視發(fā)射機(jī)的工作狀態(tài),及時發(fā)現(xiàn)并迅速處理故障。
當(dāng)前,網(wǎng)絡(luò)化的集中控制已成為設(shè)備監(jiān)控的主流技術(shù)。文獻(xiàn)[1-2]闡述了如何使用串口服務(wù)器將電視發(fā)射機(jī)接入網(wǎng)絡(luò),并通過CGI編程實(shí)現(xiàn)基于Web的遠(yuǎn)程控制,該方式只能監(jiān)控單臺發(fā)射機(jī)的運(yùn)行,無法實(shí)現(xiàn)集中監(jiān)控。文獻(xiàn)[3-4]提出了發(fā)射臺集中監(jiān)控的技術(shù)方案,它引入網(wǎng)絡(luò)管理的思想,為發(fā)射機(jī)設(shè)計SNMP代理,使用SNMP協(xié)議[5-8]采集設(shè)備信息,將控制設(shè)備當(dāng)作網(wǎng)絡(luò)設(shè)備進(jìn)行管理,進(jìn)而實(shí)現(xiàn)基于Web集中監(jiān)控,但該文獻(xiàn)未充分討論監(jiān)控軟件的體系結(jié)構(gòu),難以適應(yīng)大型、復(fù)雜系統(tǒng)的監(jiān)控需求。
在大型發(fā)射臺中,往往要監(jiān)控很多不同廠家、型號的發(fā)射機(jī)設(shè)備,查詢各設(shè)備的基本工作狀態(tài)以及碼流、激勵器、功放、冷卻裝置等部件的工作狀態(tài),在設(shè)備發(fā)生故障或告警時能查詢?nèi)罩疽暂o助故障診斷,并能控制設(shè)備執(zhí)行開關(guān)機(jī)、激勵器切換等指定的動作。監(jiān)控系統(tǒng)面臨著數(shù)據(jù)量大、結(jié)構(gòu)復(fù)雜、實(shí)時性強(qiáng)、權(quán)限控制嚴(yán)格等一系列問題,必須深入研究系統(tǒng)的體系結(jié)構(gòu)及實(shí)現(xiàn)方法。
發(fā)射臺集中監(jiān)控系統(tǒng)的總體結(jié)構(gòu)如圖1所示。可以看出,這里采用了“管理者—代理”的體系結(jié)構(gòu),整個系統(tǒng)分為三大部分。
圖1 發(fā)射臺集中監(jiān)控系統(tǒng)的總體結(jié)構(gòu)
1)設(shè)備代理
電視發(fā)射機(jī)作為被管設(shè)備,通過SNMP代理接入網(wǎng)絡(luò)。代理以輪詢的方式采集發(fā)射機(jī)的運(yùn)行參數(shù),并保存到MIB庫中供管理者訪問;當(dāng)收到管理端發(fā)送的GET請求時,代理將從MIB中獲取數(shù)據(jù)返回給管理者;而當(dāng)收到管理端的SET請求時,代理將控制設(shè)備執(zhí)行指定的動作。
目前一些新型的電視發(fā)射機(jī),本身已內(nèi)置了網(wǎng)絡(luò)接口以及SNMP代理服務(wù),可以直接通過SNMP協(xié)議訪問。而傳統(tǒng)的發(fā)射機(jī)一般都配備串口與上位機(jī)通信,這樣還需要在設(shè)備的前端增加一個串口服務(wù)器,將發(fā)射機(jī)接入網(wǎng)絡(luò),并在串口服務(wù)器中編程實(shí)現(xiàn)SNMP代理的功能[3]。
2)監(jiān)控服務(wù)器
監(jiān)控服務(wù)器是本系統(tǒng)設(shè)計的核心。在設(shè)備側(cè),它提供了數(shù)據(jù)采集與命令控制的功能,采集到的數(shù)據(jù)保存到內(nèi)存數(shù)據(jù)集或數(shù)據(jù)庫中以備訪問;在用戶側(cè),它提供了基于Web的設(shè)備監(jiān)控功能,并實(shí)現(xiàn)了用戶身份驗(yàn)證以及細(xì)粒度的訪問控制等功能。
3)監(jiān)控客戶端
用戶通過Web客戶端或者手機(jī)客戶端訪問服務(wù)器提供的各項(xiàng)服務(wù),監(jiān)視發(fā)射機(jī)的運(yùn)行狀態(tài),配置發(fā)射機(jī)的運(yùn)行參數(shù),并控制發(fā)射機(jī)執(zhí)行指定的動作。
由于設(shè)備代理的設(shè)計在相關(guān)文獻(xiàn)中已詳細(xì)介紹,這里只討論監(jiān)控服務(wù)器和監(jiān)控客戶端的設(shè)計。
在設(shè)備一側(cè),監(jiān)控服務(wù)器要和設(shè)備代理交互,采集設(shè)備運(yùn)行數(shù)據(jù)并實(shí)現(xiàn)命令控制,這通過設(shè)備訪問層來實(shí)現(xiàn),總體結(jié)構(gòu)如圖2所示。
圖2 設(shè)備訪問層總體結(jié)構(gòu)
SNMP組件提供設(shè)備代理的基本訪問功能,在此基礎(chǔ)上,由實(shí)時數(shù)據(jù)采集類和日志數(shù)據(jù)采集類采集設(shè)備數(shù)據(jù),并保存這些數(shù)據(jù)以備使用。設(shè)備狀態(tài)信息屬于實(shí)時數(shù)據(jù),每隔幾秒鐘就要刷新一次,所以暫存到內(nèi)存數(shù)據(jù)集中以提高訪問速度;而日志屬于歷史數(shù)據(jù),要保存到數(shù)據(jù)庫中以備檢索。
實(shí)時數(shù)據(jù)采集采用定時輪詢的方式實(shí)現(xiàn),輪詢周期一般設(shè)置為10 s。考慮到系統(tǒng)中監(jiān)控的設(shè)備數(shù)量眾多,每臺設(shè)備的數(shù)據(jù)采集都會產(chǎn)生一定延遲,為保證在10 s內(nèi)完成所有設(shè)備的輪詢,必須采用多線程的方式來實(shí)現(xiàn)。其工作原理如圖3所示。
圖3 實(shí)時數(shù)據(jù)采集的工作原理
解釋如下:
1)為Web應(yīng)用注冊上下文初始化監(jiān)聽器,當(dāng)Web監(jiān)控系統(tǒng)啟動時觸發(fā)執(zhí)行監(jiān)聽器中的代碼;
2)在監(jiān)聽器中啟動定時服務(wù)線程,以后該線程會定時喚醒,反復(fù)運(yùn)行,直到應(yīng)用程序退出;
3)在定時服務(wù)線程中創(chuàng)建數(shù)據(jù)采集組件,并調(diào)用其dataAcquire()方法采集數(shù)據(jù);
4)在dataAcquire()方法中,首先獲取監(jiān)控設(shè)備列表,然后針對每一個設(shè)備,分別創(chuàng)建一個數(shù)據(jù)采集線程,并調(diào)用SNMP組件的gettxdata()方法采集實(shí)時數(shù)據(jù),并將其保存到內(nèi)存數(shù)據(jù)集中備用;
5)當(dāng)調(diào)度好本輪的數(shù)據(jù)采集后,定時服務(wù)線程進(jìn)入10 s的休眠,并在定時喚醒后進(jìn)入下一輪采集。
由于被管設(shè)備提供了SNMP接口,所以命令控制功能最終都通過SNMP SET原語來實(shí)現(xiàn)。以遠(yuǎn)程開關(guān)機(jī)控制為例,其MIB節(jié)點(diǎn)定義如下:
c-txOnOff OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION"0—turn off,1—turn on"
∶={ctl 1}
可以看出,設(shè)置該節(jié)點(diǎn)的值為1將實(shí)現(xiàn)開機(jī)控制,設(shè)置為0將實(shí)現(xiàn)關(guān)機(jī)控制。其他控制命令的實(shí)現(xiàn)方法與此類似。
為提高監(jiān)控系統(tǒng)的擴(kuò)展性,為PC客戶端、手機(jī)客戶端提供一致的訪問方式,引入了監(jiān)控服務(wù)層。該層的服務(wù)接口定義如下:
客戶端通過這些監(jiān)控服務(wù),查詢設(shè)備的運(yùn)行狀態(tài),并控制設(shè)備執(zhí)行指定的動作。
對于各種不同型號的發(fā)射機(jī),其監(jiān)控功能基本類似,但監(jiān)控的數(shù)據(jù)項(xiàng)有所不同,數(shù)據(jù)展示和處理方式也不盡相同。為屏蔽設(shè)備間的這種差異,采用圖4所示的工廠設(shè)計模式:由IDeviceService定義統(tǒng)一的服務(wù)接口,然后為所有類型的發(fā)射機(jī)分別設(shè)計服務(wù)實(shí)現(xiàn)類,這些類都實(shí)現(xiàn)IDeviceService接口;在監(jiān)控某設(shè)備時,由服務(wù)工廠(ServiceFactory)根據(jù)傳入的設(shè)備類型動態(tài)構(gòu)造設(shè)備服務(wù)對象,然后依靠多態(tài)的機(jī)制,自動調(diào)用該類型設(shè)備的服務(wù)方法。
圖4 監(jiān)控服務(wù)層的類設(shè)計
從安全的角度考慮,用戶要想訪問監(jiān)控服務(wù),必須經(jīng)過嚴(yán)格的身份驗(yàn)證以及訪問控制,這些輔助功能由Web接口層來實(shí)現(xiàn),其工作原理如圖5所示??梢钥闯?,該層采用了MVC設(shè)計模式:FilterDispatcher作為請求處理的入口,將請求調(diào)度到合適的Action進(jìn)行處理(調(diào)用其execute方法);Action作為控制器,調(diào)用模型(監(jiān)控服務(wù)層)提供的方法獲取監(jiān)控數(shù)據(jù)或控制設(shè)備動作,最后將處理結(jié)果反饋給客戶端。
圖5 Web接口層的核心類設(shè)計
Web接口層為客戶端提供唯一的訪問入口,所有的請求都必須通過這個入口進(jìn)行調(diào)度和轉(zhuǎn)發(fā),所以很容易在這里部署權(quán)限驗(yàn)證過濾器(AccessControlFil?ter),實(shí)現(xiàn)訪問控制功能,基本原理如下:
1)用戶登錄時,獲取該用戶的角色列表以及管理的設(shè)備列表,存入該用戶的Session中。
2)用戶請求某項(xiàng)監(jiān)控服務(wù),該請求會被映射到一個Action進(jìn)行處理。而在請求到達(dá)Action之前,會被AccessControlFilter攔截。
3)在該過濾器中,首先驗(yàn)證用戶是否具有訪問該Action的角色,若驗(yàn)證通過,則繼續(xù)驗(yàn)證是否具有管理該設(shè)備的權(quán)限。只有角色驗(yàn)證和設(shè)備驗(yàn)證都通過的請求,才會被調(diào)度到Action,否則返回Access Denied信息。
Web應(yīng)用的用戶界面一般在服務(wù)器端動態(tài)生成,然后將產(chǎn)生的HTML代碼傳遞給客戶端,由瀏覽器展示給用戶。但由于監(jiān)控界面的生成邏輯比較復(fù)雜,要根據(jù)設(shè)備的配置信息及運(yùn)行狀態(tài)動態(tài)構(gòu)造并不斷刷新,大大增加了服務(wù)器的處理負(fù)荷。為有效降低服務(wù)器開銷,可以將傳統(tǒng)的頁面表示邏輯轉(zhuǎn)移到客戶層來完成,具體方法是:在客戶端使用AJAX技術(shù)異步請求監(jiān)控服務(wù),服務(wù)器端將生成的數(shù)據(jù)(不是HTML頁面)直接返回給客戶端,然后在客戶端使用JavaScript解析和展示。
客戶端需要的數(shù)據(jù)主要是各監(jiān)控項(xiàng)的ID及數(shù)值,為減少數(shù)據(jù)傳輸量,采用JSON字符串的形式來包裝數(shù)據(jù),如下:
{“OID1”∶“VALUE1”,“OID2”∶“VALUE2”,“OID3”∶“VAL?UE3”,…,“OIDN”∶“VALUEN”}
這樣,JavaScript可以方便地將JSON字符串轉(zhuǎn)換為屬性集合,然后根據(jù)屬性名檢索屬性值,以此來調(diào)整頁面顯示,實(shí)現(xiàn)頁面局部刷新。
結(jié)合某電視設(shè)備有限公司發(fā)射機(jī)監(jiān)控的實(shí)際需求,設(shè)計了基于Web的遠(yuǎn)程集中監(jiān)控系統(tǒng),介紹了系統(tǒng)的總體結(jié)構(gòu),并重點(diǎn)說明了設(shè)備訪問層、監(jiān)控服務(wù)層、Web接口層以及客戶層的設(shè)計方法。該方案解決了多種設(shè)備的整合監(jiān)控以及細(xì)粒度的訪問控制等問題,能夠滿足大型電視發(fā)射臺遠(yuǎn)程集中監(jiān)控的基本要求。
[1]白小軍,羅鈞旻.基于WEB的發(fā)射機(jī)遠(yuǎn)程控制系統(tǒng)設(shè)計[J].通信技術(shù),2008,41(9):59-61.
[2]蘇振濤,羅鈞旻,白小軍.基于設(shè)備服務(wù)器的電視發(fā)射機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)[J].計算機(jī)測量與控制,2009,17(10):1883-1886.
[3]白小軍,楊軍,喻鈞.基于Web的電視發(fā)射臺遠(yuǎn)程集中監(jiān)控系統(tǒng)設(shè)計[J].電視技術(shù),2012,36(10):66-72.
[4] 白小軍,楊軍.電視發(fā)射臺短信監(jiān)控系統(tǒng)設(shè)計[J].電視技術(shù),2012,36(18):89-92.
[5]CASE J,F(xiàn)EDOR M,SCHOFFSTALL M,et al.IETF RFC1157,A simple network management protocol(SNMP)[S].1990.
[6] The SNMP Protocol[EB/OL].[2013-11-20].http://www.snmp.org/ protocol/.
[7]MCCLOGHRIE K,ROSE M.IETF RFC1156,Management infor?mation base for network management of TCP/IP-based internets [S].1990.
[8] SNMP4J-The object oriented SNMP API for Java managers and agents[EB/OL].[2013-11-20].http://www.snmp4j.org/.
Design of Centralized M onitoring System for TV Transm itting Station
BAI Xiaojun,HE Lei,WU Fudan
(School of Computer Science and Engineering,Xi’an Technological University,Xi'an 710032,China)
According to the requirements of remote monitoring for TV transmitting station,a Web-based centralized monitoring solution is presented,the total structure and software architecture of this system is discussed,and the problems of integrated monitoring and access control are solved.Practice is proved that this solution can meet the needs of centralized device monitoring for large TV transmitting station.
TV transmitter;device monitoring;software architecture;access control
TN948;TP273.5
A
??健男
2014-01-16
【本文獻(xiàn)信息】白小軍,赫磊,吳夫丹.電視發(fā)射臺集中監(jiān)控系統(tǒng)設(shè)計[J].電視技術(shù),2014,38(16).