陳震解,周學(xué)兵
(卡斯柯信號有限公司,上海 200071)
隨著國內(nèi)經(jīng)濟的高速發(fā)展與路網(wǎng)的擴充,TDCS/CTC 系統(tǒng)在全路大規(guī)模使用,為了滿足日益增長的系統(tǒng)查詢需求,又不影響生產(chǎn)系統(tǒng)的穩(wěn)定性和安全性,各路局陸續(xù)建設(shè)了TDCS/CTC 查詢系統(tǒng)。最初的查詢系統(tǒng)只提供調(diào)監(jiān)畫面、調(diào)整運行圖和歷史運行圖的查詢,通過接口服務(wù)器應(yīng)用程序?qū)崿F(xiàn)生產(chǎn)系統(tǒng)向查詢系統(tǒng)的同步。目前路局在用生產(chǎn)查詢系統(tǒng)整體結(jié)構(gòu)如圖1 所示。
查詢系統(tǒng)和生產(chǎn)系統(tǒng)的各服務(wù)器間通過網(wǎng)絡(luò)相連,生產(chǎn)系統(tǒng)接口服務(wù)器和查詢系統(tǒng)接口服務(wù)器間通過USB 電纜連接,接口程序使用專用協(xié)議進行網(wǎng)絡(luò)隔離條件下的信息同步。查詢系統(tǒng)從生產(chǎn)系統(tǒng)獲取調(diào)監(jiān)畫面、調(diào)整運行圖信息,滿足用戶基本的調(diào)監(jiān)和運行圖的查詢需求。
但隨著查詢系統(tǒng)的大面積推廣使用,用戶提出需要查詢?nèi)瞻嘤媱潯⒒緢D、調(diào)度命令及報警信息等更多需求。采用接口服務(wù)器通過接口程序進行數(shù)據(jù)同步方式數(shù)據(jù)格式較為固定,面對提出的新需求需要不斷的擴展升級接口服務(wù)器程序。而日班計劃、基本圖、調(diào)度命令及報警信息等信息存儲在生產(chǎn)系統(tǒng)數(shù)據(jù)庫中,最為簡單的方法就是基于數(shù)據(jù)庫實現(xiàn)生產(chǎn)系統(tǒng)向查詢系統(tǒng)同步數(shù)據(jù)。
圖1 生產(chǎn)查詢系統(tǒng)結(jié)構(gòu)示意圖Fig.1 Structure diagram of production and inquiry system
為確保信息安全,生產(chǎn)系統(tǒng)與查詢系統(tǒng)之間USB 串口為獨占式調(diào)用訪問,已無法通過USB 串口進行數(shù)據(jù)庫同步流傳輸。為確保網(wǎng)絡(luò)隔離,需要采用另外的非網(wǎng)絡(luò)的數(shù)據(jù)庫同步載體。
查詢子系統(tǒng)與生產(chǎn)系統(tǒng)數(shù)據(jù)庫同步,可以通過以下兩種方案實現(xiàn)。
1)研發(fā)實現(xiàn)數(shù)據(jù)庫同步程序。
2)通過商用數(shù)據(jù)庫同步軟件實現(xiàn)數(shù)據(jù)庫同步。
采用商用數(shù)據(jù)同步軟件實現(xiàn)具有以下缺點:a.部署成本高,一般需要數(shù)十萬軟件費用;b.要求維護人員具有較高技術(shù)水平;c.部署不夠靈活,商用數(shù)據(jù)庫同步軟件建立在TCP/IP 基礎(chǔ)上,這樣就需要溝通生產(chǎn)系統(tǒng)和查詢系統(tǒng)之間的網(wǎng)絡(luò),存在信息安全風(fēng)險。
結(jié)合TDCS/CTC 生產(chǎn)查詢系統(tǒng)的實際情況,用戶要求數(shù)據(jù)同步方案需部署靈活,使用方便,維護簡單,網(wǎng)絡(luò)隔離,這都是傳統(tǒng)商用數(shù)據(jù)同步方案實現(xiàn)不了的,這樣就基本否定了采用商用數(shù)據(jù)同步軟件方案,需自研數(shù)據(jù)庫同步程序。
與傳統(tǒng)數(shù)據(jù)庫同步軟件相比,自研數(shù)據(jù)庫同步方案具有以下優(yōu)點。
a.部署成本低
HW4504機心專為史詩陀飛輪Histoire de Tourbillon 9號腕表研發(fā),確保這款腕表成為不可多得的非凡臻品。腕表一共限量發(fā)行20只,白18K金和玫瑰18K金款式各10只。
本方案使用了成熟的串口通信技術(shù)和數(shù)據(jù)庫技術(shù),實現(xiàn)過程廣泛采用腳本和第三方軟件,降低方案的開發(fā)工作量和復(fù)雜性,使得部署成本非常低廉。
b.對維護人員要求低
本方案的整個過程都是自動完成,中間環(huán)節(jié)少,維護人員易于理解執(zhí)行過程,維護簡單。
c.部署靈活
本方案廣泛使用了命令腳本,可根據(jù)實際需要靈活調(diào)整腳本參數(shù),程序配置也可靈活調(diào)整,部署靈活性比較高。
d.網(wǎng)絡(luò)安全隔離
通過調(diào)用串口進行數(shù)據(jù)同步,避免生產(chǎn)系統(tǒng)與查詢系統(tǒng)之間的網(wǎng)絡(luò)溝通,保證系統(tǒng)之間的網(wǎng)絡(luò)安全。
基于成本效率和網(wǎng)絡(luò)安全考慮,如圖2 所示,設(shè)計一種簡單可靠的數(shù)據(jù)同步方案。
對比圖1、2 的系統(tǒng)結(jié)構(gòu),增加數(shù)據(jù)同步功能后并未在原有系統(tǒng)結(jié)構(gòu)中增加新的設(shè)備,只是增加了查詢系統(tǒng)從生產(chǎn)系統(tǒng)通過RS-232 串口同步數(shù)據(jù)庫中數(shù)據(jù)的過程。這樣查詢系統(tǒng)除了可以查詢調(diào)監(jiān)畫面,調(diào)整運行圖和歷史運行圖等現(xiàn)有功能外,還可以查詢?nèi)瞻嘤媱潯⒒緢D、調(diào)度命令及報警信息等。即使日后查詢系統(tǒng)需要查詢更多的信息,包括以后生產(chǎn)系統(tǒng)擴展的新業(yè)務(wù)的信息,都可以通過該方式將數(shù)據(jù)從生產(chǎn)系統(tǒng)的數(shù)據(jù)庫同步到查詢系統(tǒng)的數(shù)據(jù)庫。
圖2 增加數(shù)據(jù)同步功能后的生產(chǎn)查詢系統(tǒng)結(jié)構(gòu)示意圖Fig.2 Structure diagram of inquiry system after adding data synchronization function
方案的實現(xiàn)過程如圖3 所示。
圖3 數(shù)據(jù)流程圖Fig.3 Data flow diagram
數(shù)據(jù)庫服務(wù)器上部署的數(shù)據(jù)同步程序周期性定時調(diào)用數(shù)據(jù)導(dǎo)出腳本完成數(shù)據(jù)導(dǎo)出工作。數(shù)據(jù)導(dǎo)出后數(shù)據(jù)同步程序自動調(diào)用FTP 腳本傳送數(shù)據(jù)文件到接口服務(wù)器的指定目錄。生產(chǎn)系統(tǒng)接口服務(wù)器通過RS-232 串口與查詢系統(tǒng)接口服務(wù)器連接,由數(shù)據(jù)同步軟件執(zhí)行串口文件同步將數(shù)據(jù)文件傳送到查詢系統(tǒng)接口服務(wù)器的指定目錄。查詢系統(tǒng)接口服務(wù)器上的數(shù)據(jù)同步程序檢測到數(shù)據(jù)后,調(diào)用FTP 腳本傳送到查詢系統(tǒng)的數(shù)據(jù)庫服務(wù)器,最后由查詢系統(tǒng)數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)同步程序調(diào)用相應(yīng)的數(shù)據(jù)導(dǎo)入腳本將數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫。
整個過程由生產(chǎn)系統(tǒng)的數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)同步程序定時發(fā)起,后續(xù)各環(huán)節(jié)自動接力完成。
查詢系統(tǒng)與生產(chǎn)系統(tǒng)之間數(shù)據(jù)庫同步程序?qū)崿F(xiàn)難點主要如下。
1)數(shù)據(jù)一致性的保證
數(shù)據(jù)導(dǎo)出時,利用數(shù)據(jù)庫快照(FLASHBACK)技術(shù),確保導(dǎo)出數(shù)據(jù)的一致性。
2)數(shù)據(jù)傳送時效性的保證
對于大數(shù)據(jù)量的數(shù)據(jù)表,利用其中時間相關(guān)的字段,數(shù)據(jù)同步程序在調(diào)用數(shù)據(jù)導(dǎo)出腳本時,給出參數(shù)過濾導(dǎo)出數(shù)據(jù),只導(dǎo)出增量數(shù)據(jù),時間參數(shù)可以為班別、日期、時間(包括time_t,timestamp 等)。
對于小數(shù)據(jù)量的數(shù)據(jù)表,每次均為全表同步。
3)數(shù)據(jù)傳輸準(zhǔn)確性的保證
數(shù)據(jù)同步程序在串口通信過程中建立有反饋機制,通過校驗碼技術(shù),確保數(shù)據(jù)準(zhǔn)確傳輸。
4)數(shù)據(jù)不遺漏、不重復(fù)導(dǎo)入的保證
對于增量同步的數(shù)據(jù)表,需要確保數(shù)據(jù)不遺漏,不重復(fù)。
比如調(diào)度命令,在編制后,由于簽收等情況,數(shù)據(jù)還會更新。后續(xù)增量同步時還需要同步該命令,同時需保證覆蓋原數(shù)據(jù),而非增加。
同時需要確保某幾次增量同步由于某種原因失敗后,后續(xù)能夠自動恢復(fù),簡化維護。
本方案通過如下機制來確保數(shù)據(jù)不遺漏、不重復(fù)。
a. 導(dǎo)出端每小時進行一次導(dǎo)出,導(dǎo)出為最近一天的數(shù)據(jù)。
b. 導(dǎo)入端在數(shù)據(jù)導(dǎo)入前,先刪除最近一天的數(shù)據(jù)(時間范圍與導(dǎo)入數(shù)據(jù)時間范圍一致)
c. 上述時間范圍一天、導(dǎo)出間隔1 h 均為示例,根據(jù)業(yè)務(wù)數(shù)據(jù)的實際情況確定。
1) 串口通信技術(shù)
為不影響在用軟件的功能及架構(gòu),且為了實現(xiàn)功能獨立,不能采用既有的USB 通信線通信方式,必須采用另一種獨立的并且可以實現(xiàn)通信隔離的技術(shù)。經(jīng)過查閱相關(guān)資料,結(jié)合易用性,可維護性的需求,本方案選擇串口通信技術(shù),采用RS-232 串口線實現(xiàn)查詢系統(tǒng)從生產(chǎn)系統(tǒng)同步數(shù)據(jù)的功能。商用服務(wù)器硬件都自帶串口,且串口通信具有使用廣泛,安全可靠的優(yōu)點,保證方案的可行性。
2) Oracle 數(shù)據(jù)庫導(dǎo)入導(dǎo)出技術(shù)
TDCS/CTC 系統(tǒng)采用的都是Oracle 數(shù)據(jù)庫,因此在生產(chǎn)系統(tǒng)數(shù)據(jù)導(dǎo)出和查詢系統(tǒng)數(shù)據(jù)導(dǎo)入方面,選擇Oracle 自帶的imp/exp 導(dǎo)出導(dǎo)入技術(shù)。Oracle 自帶的導(dǎo)出導(dǎo)入技術(shù)具有使用廣泛,導(dǎo)出導(dǎo)入速度快,數(shù)據(jù)一致,可靠性高的優(yōu)點,保證方案的可行性。
本文設(shè)計的方案易于實現(xiàn)且簡單靈活,在既有硬件條件下,開發(fā)數(shù)據(jù)同步程序?qū)崿F(xiàn)查詢信息擴充、完善,降低了接管單位運營成本和運維復(fù)雜性,提高了安全隔離程度。
目前該數(shù)據(jù)同步方案已在多個鐵路集團公司TDCS/CTC 生產(chǎn)查詢系統(tǒng)中運用實現(xiàn),包括沈陽局集團有限公司(同步報警信息等用于后期大數(shù)據(jù)分析),南昌局集團有限公司(同步基本圖、調(diào)度命令等供查詢使用)等,至今運行穩(wěn)定可靠,實現(xiàn)了方案的設(shè)計目標(biāo),滿足了用戶對查詢系統(tǒng)的需求,提高查詢系統(tǒng)的可用性,同時對其他系統(tǒng)中的類似需求也有一定的參考價值。