(廣西廣播電視技術(shù)中心)
當(dāng)前廣西廣播電視技術(shù)中心管轄的無(wú)線發(fā)射臺(tái)站數(shù)量已達(dá)800多個(gè),各臺(tái)站內(nèi)使用的設(shè)備品牌、種類繁多,大部分通訊協(xié)議均使用TCP/UDP協(xié)議下的自定義數(shù)據(jù)結(jié)構(gòu),且各種設(shè)備均不相同。所有設(shè)備的運(yùn)行數(shù)據(jù)目前統(tǒng)一由遠(yuǎn)程監(jiān)控系統(tǒng)進(jìn)行接收保存,而遠(yuǎn)程監(jiān)控系統(tǒng)的數(shù)據(jù)采集均是通過(guò)網(wǎng)絡(luò)傳輸,考慮到網(wǎng)絡(luò)連接必然存在各種不可預(yù)知的風(fēng)險(xiǎn),網(wǎng)絡(luò)傳輸萬(wàn)一斷開(kāi),臺(tái)站設(shè)備運(yùn)行數(shù)據(jù)便無(wú)法實(shí)時(shí)收集,不利于運(yùn)維工作的開(kāi)展,進(jìn)而可能影響安全播出。
由此考慮開(kāi)發(fā)一套部署于臺(tái)站的數(shù)據(jù)存儲(chǔ)工具,實(shí)時(shí)采集接收各臺(tái)站設(shè)備關(guān)鍵數(shù)據(jù),以便于在任何需要的時(shí)候,進(jìn)行設(shè)備數(shù)據(jù)調(diào)取查閱,同時(shí)為臺(tái)站運(yùn)維工作提供便利。
工具軟件基本設(shè)計(jì)要求:
工具軟件可運(yùn)行在現(xiàn)有臺(tái)站服務(wù)器上;兼容當(dāng)前大部分臺(tái)站設(shè)備;可靈活動(dòng)態(tài)配置臺(tái)站、設(shè)備、命令結(jié)構(gòu)信息;可以主動(dòng)發(fā)送命令;可長(zhǎng)期保存接收的數(shù)據(jù),亦可作為臨時(shí)調(diào)測(cè)工具使用。
1.基本流程
數(shù)據(jù)存儲(chǔ)工具接收、解析數(shù)據(jù)基本流程如圖1。
2.兼容性設(shè)計(jì)
從開(kāi)發(fā)難度、可維護(hù)性、通用性上綜合衡量,并結(jié)合目前大部分服務(wù)器操作系統(tǒng)為Windows的特點(diǎn),調(diào)試工具開(kāi)發(fā)采用C#編程語(yǔ)言,底層框架為兼容Windows所有系統(tǒng)版本的.NET Framework 3.5框架。
圖1 基本流程
通過(guò)對(duì)各設(shè)備的通訊方式進(jìn)行研究,發(fā)現(xiàn)大部分均采用TCP/UDP方式進(jìn)行通訊;因此在接收處理數(shù)據(jù)報(bào)文時(shí),首先是將報(bào)文數(shù)據(jù)直接以十六進(jìn)制方式保存到數(shù)據(jù)庫(kù),然后再根據(jù)報(bào)文來(lái)源設(shè)備的類型,對(duì)報(bào)文進(jìn)行解析。接收數(shù)據(jù)和解析數(shù)據(jù)的工作互不干擾,這樣既可以很好的保證數(shù)據(jù)接收的穩(wěn)定性,也保證了數(shù)據(jù)的完整性。
3.配置設(shè)計(jì)
工具需要兼容所有的臺(tái)站和設(shè)備,為了使用靈活,設(shè)計(jì)了設(shè)備信息表、設(shè)備類型表、類型結(jié)構(gòu)表等配置信息表,并使之關(guān)聯(lián)起來(lái):
設(shè)備信息表用于記錄各個(gè)設(shè)備的地址、端口、設(shè)備類型等字段信息,其中設(shè)備類型字段關(guān)聯(lián)設(shè)備類型表;
設(shè)備類型表用于標(biāo)記該設(shè)備的類型,如電源復(fù)位器、六路協(xié)調(diào)器、發(fā)射機(jī)等;
結(jié)構(gòu)類型表以設(shè)備類型表為基礎(chǔ),保存了各個(gè)設(shè)備類型對(duì)應(yīng)的報(bào)文結(jié)構(gòu),包含了該報(bào)文需要解析的信息,如順序、類型、長(zhǎng)度等。
通過(guò)多個(gè)信息表數(shù)據(jù),很好的滿足了存儲(chǔ)工具對(duì)兼容設(shè)備多樣性的要求。
4. 數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)工具數(shù)據(jù)庫(kù)既可以長(zhǎng)期保存接收的數(shù)據(jù),也可以當(dāng)作臨時(shí)調(diào)測(cè)工具使用的要求,對(duì)應(yīng)兩種情況,分別采用SQL Server和Access數(shù)據(jù)庫(kù)。
當(dāng)工具需要在臺(tái)站長(zhǎng)期運(yùn)行時(shí),采用SQL Server數(shù)據(jù)庫(kù),它的高性能可以很好的保證數(shù)據(jù)的存儲(chǔ),而且SQL Server具備非常良好的易用性,便于后期維護(hù)。
當(dāng)需要把工具作為臨時(shí)調(diào)試工具時(shí),采用Access文件數(shù)據(jù)庫(kù),它兼容Windows環(huán)境,具有小巧便捷免安裝的特點(diǎn),便于在各種維護(hù)情況下使用。
在對(duì)臺(tái)站設(shè)備數(shù)據(jù)進(jìn)行接收、解析時(shí),隨著時(shí)間的積累,數(shù)據(jù)量會(huì)非常大;所以在保存數(shù)據(jù)時(shí),采用月表(每個(gè)月一張數(shù)據(jù)表)的方式進(jìn)行保存,這樣可以很好的保證工具運(yùn)行的穩(wěn)定和高效。
1.通用通訊協(xié)議
在分析設(shè)備類型時(shí),發(fā)現(xiàn)使用通用通信協(xié)議的設(shè)備的主動(dòng)報(bào)文是動(dòng)態(tài)配置的,如果運(yùn)維人員根據(jù)需要調(diào)整了主動(dòng)報(bào)文的結(jié)構(gòu),會(huì)導(dǎo)致工具就無(wú)法解析數(shù)據(jù)報(bào)文;于是根據(jù)通用通訊協(xié)議主動(dòng)報(bào)文自帶結(jié)構(gòu)參數(shù)的特性進(jìn)行特別處理,在初始化通用通訊協(xié)議的結(jié)構(gòu)類型表時(shí),將所有參數(shù)全部錄入;在接收來(lái)自于支持通用通訊協(xié)議設(shè)備的數(shù)據(jù)報(bào)文時(shí),工具自動(dòng)解析數(shù)據(jù)報(bào)文所包含的參數(shù),并和結(jié)構(gòu)類型表的參數(shù)自動(dòng)匹配、建表;由此實(shí)現(xiàn)解決工具因?yàn)樵O(shè)備主動(dòng)報(bào)文結(jié)構(gòu)的調(diào)整導(dǎo)致數(shù)據(jù)無(wú)法接收的情況。
2.主動(dòng)發(fā)送命令
數(shù)據(jù)存儲(chǔ)工具除了接收設(shè)備主動(dòng)報(bào)文,還增加了主動(dòng)發(fā)送命令的功能;在初始化設(shè)備信息時(shí),通過(guò)添加主動(dòng)命令及定時(shí)間隔;工具將根據(jù)配置,定時(shí)發(fā)送特定命令到目標(biāo)設(shè)備;通過(guò)此功能,工具可以獲取除主動(dòng)報(bào)文外的數(shù)據(jù)信息。
3.數(shù)據(jù)解析處理
臺(tái)站工具在需要長(zhǎng)期運(yùn)行,當(dāng)數(shù)據(jù)量積累到一定數(shù)量時(shí),必定會(huì)造成工具運(yùn)行緩慢,甚至導(dǎo)致工具無(wú)法工作。于是在開(kāi)發(fā)設(shè)計(jì)時(shí)進(jìn)行了相應(yīng)的優(yōu)化,解析成功的源數(shù)據(jù)不再保留、一定時(shí)間內(nèi)的特定類型數(shù)據(jù)如果重復(fù)則不接收。
4.數(shù)據(jù)庫(kù)操作
圖2 類型結(jié)構(gòu)參數(shù)
圖3 數(shù)據(jù)展示
在對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫操作時(shí),需盡量避免交叉使用,特別是在對(duì)源數(shù)據(jù)表讀寫上,接收數(shù)據(jù)時(shí)保存和解析數(shù)據(jù)時(shí)讀寫操作容易造成數(shù)據(jù)鎖;為此在接收到數(shù)據(jù)報(bào)文時(shí),數(shù)據(jù)報(bào)文首先保存到隊(duì)列中,下一步再進(jìn)行入庫(kù)操作,而解析數(shù)據(jù)時(shí),首先將一小段數(shù)據(jù)保存至另一個(gè)臨時(shí)表,這樣可以有效降低對(duì)源數(shù)據(jù)表讀寫操作的頻率。
5.容錯(cuò)能力
臺(tái)站環(huán)境復(fù)雜,設(shè)備廠家、類型、協(xié)議多種多樣,工具軟件功能的復(fù)雜性等,工具軟件的穩(wěn)定性非常重要,即對(duì)工具容錯(cuò)能力提出很大要求;在開(kāi)發(fā)時(shí),每一個(gè)重點(diǎn)操作均需對(duì)可能出現(xiàn)的異常進(jìn)行處理,如解析數(shù)據(jù)時(shí)數(shù)據(jù)類型之間的轉(zhuǎn)換、保存入庫(kù)時(shí)類型的轉(zhuǎn)換、不同數(shù)據(jù)庫(kù)類型間的差異化等。
6.多線程處理
工具在處理數(shù)據(jù)接收、保存、解析、查詢時(shí),多線程技術(shù)的使用尤為關(guān)鍵,尤其體現(xiàn)在界面操作的用戶體驗(yàn)上;在使用多線程時(shí),巧妙的使用線程委托技術(shù),實(shí)現(xiàn)線程與界面進(jìn)行交互,可以非常有效的提升使用效果。
1.參數(shù)配置
在參數(shù)設(shè)置界面,每個(gè)參數(shù)的新增錄入,工具均會(huì)提供默認(rèn)值或參考值,并且伴有相應(yīng)的提示信息,確保參數(shù)正常;在結(jié)構(gòu)參數(shù)錄入時(shí),尤其需要注意參數(shù)的先后順序。
2.數(shù)據(jù)接收
設(shè)備發(fā)出數(shù)據(jù)報(bào)文,工具接收到數(shù)據(jù)報(bào)文后,根據(jù)配置的設(shè)備地址及端口等判斷是否來(lái)源于目標(biāo)設(shè)備,是則保存,否則丟棄該數(shù)據(jù)報(bào)文;保存時(shí)判斷該報(bào)文類型是否為自帶結(jié)構(gòu)參數(shù)的類型,是則自動(dòng)解析出參數(shù),然后根據(jù)參數(shù)創(chuàng)建數(shù)據(jù)表。
3.數(shù)據(jù)解析
從數(shù)據(jù)庫(kù)分批獲取保存的源數(shù)據(jù)信息,工具根據(jù)源數(shù)據(jù)信息記錄的參數(shù)信息,判斷報(bào)文結(jié)構(gòu)并解析數(shù)據(jù),解析成功則保存到分表,源數(shù)據(jù)信息刪除;解析時(shí)需區(qū)分該報(bào)文類型是否為自帶參數(shù)類型,根據(jù)數(shù)據(jù)報(bào)文長(zhǎng)度進(jìn)行截取轉(zhuǎn)換為可視數(shù)據(jù)后存入分表。
4.結(jié)果查詢
在運(yùn)維人員進(jìn)行數(shù)據(jù)查詢分析時(shí),解析后的報(bào)文數(shù)據(jù)通過(guò)表格形式展現(xiàn),列表上方提供了檢索功能;左邊區(qū)域以結(jié)構(gòu)類型為基礎(chǔ),顯示設(shè)備結(jié)構(gòu)類型樹(shù)。
當(dāng)選中某個(gè)設(shè)備類型時(shí),右邊區(qū)域動(dòng)態(tài)初始化,表格顯示、檢索區(qū)域在初始化時(shí),通過(guò)讀取后臺(tái)對(duì)應(yīng)結(jié)構(gòu)類型信息進(jìn)行對(duì)應(yīng)顯示,這樣方便后期運(yùn)維查詢和數(shù)據(jù)篩選。
臺(tái)站數(shù)據(jù)存儲(chǔ)工具,可以很好的對(duì)臺(tái)站設(shè)備的數(shù)據(jù)進(jìn)行保存處理,很好的為臺(tái)站的運(yùn)維工作提供了便利,并且作為遠(yuǎn)程監(jiān)控系統(tǒng)的一個(gè)很好的補(bǔ)充,為單位安全播出工作的開(kāi)展也提供了有力的支撐。