

摘? 要:本文設計了一種可以應用在煤礦安全監控系統中的,支持多客戶端多業務的文件同步組件,該組件可以同步煤礦安全監控系統中主熱備計算機上的配置文件和其他相關業務文件,為煤礦安全監控系統提供了相應的技術支持。
關鍵詞:煤礦安全監控系統;文件同步;文件監視
中圖分類號:TD76;TP277? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)07-0014-04
Abstract:This paper designs a file synchronization component which can be used in coal mine safety monitoring system and support multi-client and multi-service. The component can synchronize configuration files and other related business files on the main hot standby machine in coal mine safety monitoring system,and provide corresponding technical support for coal mine safety monitoring system.
Keywords:coal mine safety monitoring system;document synchronization;document monitoring
1? 背景
煤炭是一種重要的資源,但煤炭開采受煤層和地質情況的影響越來越大,很多礦井環境惡劣,還要受水災、火災、瓦斯爆炸、粉塵污染等自然災害的影響,因此國家要求煤礦必須安裝煤礦安全生產監控系統,通過一系列技術手段來保障煤礦生產的安全性和可靠性。
煤礦安全生產監控系統一般通過采用雙機熱備的方式來保障系統的穩定可靠,而雙機熱備技術又涉及主機和備機之間的數據交互,目前主要通過數據庫和網絡來傳輸相關信息,但監控系統還可能存在大量的配置文件,這些配置以文件形式存放于相關目錄中,因此設計一款基于煤礦安全生產監控系統的文件同步組件具有重要意義。
目前市面上流行著一些文件同步產品,但存在各種問題,比如配置安裝復雜、對外接口不通用、與監控系統軟件不兼容,出現問題不能及時發現和解決等等,并不適合煤礦的使用環境,作者通過調研多個煤礦安全生產監控系統軟件廠商,收集到了適合監控系統環境下的文件同步需求,整理如下:
(1)文件同步組件需要能夠獨立運行,不依賴其他第三方的軟件,同時能夠對監控系統提供相關參數設計的接口,以確定文件同步方向、同步的文件類型等等。
(2)文件同步組件需要能夠同步2臺或2臺以上的計算機之間的文件數據同步,并且支持雙向同步功能。
(3)由于煤礦生產的特殊性,相關使用人員的軟件知識不高,文件同步組件需要盡量簡化參數配置,同時能支持實時修改設置功能。
針對以上需求,有了本文的這款文件同步組件的設計方案。
2? 方案設計
2.1? 業務流程
整個系統業務流程如圖1所示。
組件業務流程如下:
(1)文件同步組件以Windows服務的方式統一對外提供服務接口,在不同計算機上運行的業務軟件各自啟動安裝好的文件同步組件服務。
(2)業務軟件向文件同步組件注冊當前需要同步的業務信息。
(3)文件同步組件根據當前注冊的業務向網絡中廣播,并根據其他文件同步組件廣播的信息組織整理一張完整的業務同步拓撲圖,包含當前業務所包含的所有文件同步組件所在計算機的IP、業務信息,以及同步身份等。
(4)業務軟件設置當前文件同步組件的身份:源機、目標機。
(5)文件同步組件根據身份和業務自動同步網絡中其他的文件同步組件,保證各個計算機上的文件同源機上的一致。
文件同步組件沒有UI界面,所有交互都統一通過對外開放的WCF接口。
2.2? 系統總體結構
系統的總體結構如圖2所示。
文件同步組件支持多個客戶端,支持每個客戶端的不同業務文件的分類同步,各個子業務之間互不干擾。
組件的主要功能包括:用戶參數設置、文件同步兩大功能模塊,其中用戶參數設置主要是用來調整組件同步的相關設置,比如業務注冊、業務注銷、同步參數等等,用戶通過這些外部接口,來調整組件的運行狀態。文件同步模塊主要包括文件監視、文件讀寫、節點維護等,文件監視主要是監視本地注冊的業務內的所有文件,如果發生變動,則生成最新的文件hash并廣播通知,文件讀寫主要是要根據多線程的讀寫文件狀態來設置相應的鎖,防止出現文件被占用的情況,節點維護主要是收集整個網絡中的其他文件同步組件,并在本地內存中形成一個同步的拓撲結構。
2.3? 關鍵技術
2.3.1? 心跳模塊設計
心跳模塊主要是用來按照一定的業務邏輯通過通信接口模塊向網絡中其他的文件同步組件發送心跳包,并解析自身接收到的心跳包。
其監聽算法流程如圖3所示。
心跳模塊監聽過程中,主要收到兩種信息包:常規身份信息包和文件變動廣播包。常規身份信息包主要包含自身文件同步組件所使用的網卡IP地址、組件當前的身份、組件的升成源機身份的時間等等,常規身份信息包可以幫助組件了解整個同步網絡的情況,并結合自身狀態進行身份的切換。文件變動廣播包主要是在當本地監控的文件發生了變動后,向整個網絡廣播變動信息,使其他組件能夠及時獲取變動文件并更新自身的狀態。
為了防止網絡上的其他無效數據的干擾,心跳包需要做一些特殊的處理,比如所有字節的異或校驗、長度校驗等等,只有通過校驗的數據包才是組件能正常解析的心跳包,其他不符合的都將被丟棄。心跳包的設計方案如圖4所示。
2.3.2? 文件信息維護模塊設計
該模塊主要是用來定時監視相關業務的文件系統,當業務或業務對應的文件發生變動時,自動維護文件信息。
文件信息維護模塊算法流程如圖5所示。
組件為每一個業務創建一個文件監視對象,該對象可以實時監視該業務所包含的文件系統,并將所有的文件的變動情況存儲于對象的隊列中。文件信息維護模塊遍歷所有業務,并循環遍歷該業務中的變動隊列,遍歷的同時檢查該文件是否處于正常狀態,如果處于非正常狀態則將該變動信息置于隊列末尾,若處于正常狀態則處理該變動信息,檢查當前組件身份是否為源機,如果是目標機,則不需要處理,如果是源機,則生成UDP變動包并廣播通知其他目標機,其他目標機回歸根據變動包來主動獲取一次文件信息,其余時候則是定時獲取。
2.3.3? 文件同步模塊設計
該模塊主要是用來定時向源機獲取文件信息,并與本地文件信息列表進行比較,并根據相關規則決定是否同步該文件。
具體算法流程如圖6所示。
組件定時判斷自身的身份狀態,如果是源機狀態,則不需要進行處理,如果是目標機,則向目前網絡環境中的當前業務系統的源機發送文件信息請求,文件信息包括文件路徑、文件hash碼、文件當前狀態等一系列的內容,目標機收到源機的回復后,和本地的文件進行比較,如果發現本地文件不存在或是和源機的hash碼不一致,則說明源機的文件發生了變動,需要下載對應的文件并覆蓋本地文件,這里需要注意的是,當源機被目標機下載文件時,防止多個目標機同時下載相同文件時發生讀寫失敗的問題,需要約定在同一業務中,同一時間只允許最多有一個文件在被下載,在文件被允許下載的時候,需要將該文件狀態設置為正在同步狀態。
3? 系統應用成果
系統開發完成后,筆者將該系統應用于實際的監控系統中,軟件能夠正常同步兩臺監控主機和備機之間的配置文件,并且同步的實時性較高。同步的文件可以指定特定的后綴,文件的變動類型包括新建、修改、刪除、改名,同時也支持子文件夾的目錄結構。在業務系統沒有特殊的通信接口的環境下,文件同步組件很好地彌補了不同系統間的文件保持同步的功能,試驗測試結果驗證了該系統的優勢和實用性。
4? 結? 論
基于煤礦安全監控系統的文件同步組件的設計與實現,彌補了煤礦安全監控系統的安全盲點,使得安全監控系統的使用更符合安全規程,進而確保煤礦生產的安全性。該方案的設計不僅具有實踐意義,而且也能為將來的監控系統的發展提供一定的參考意義。
參考文獻:
[1] 丁賢林.基于SVN的項目文檔管理系統實現 [D].成都:電子科技大學,2012.
[2] 薛一波,易成岐.云存儲 [J].中興通訊技術,2012,18(1):57-60.
作者簡介:丁瑞琦(1981-),男,漢族,江蘇常州人,碩士研究生,研究方向:煤礦監控類軟件設計與研發。