黃經國 李正媛 陶 冶 王 軍 趙 斌
?
基于SFTP的GNSS數據采集軟件的設計與實現1
黃經國1)李正媛1)陶 冶1)王 軍1)趙 斌2)
1)中國地震臺網中心,北京 100045 2)湖北省地震局,武漢 430071
本文首先對GNSS數據產品服務平臺的建設背景及其系統設計框架進行概述,進而介紹了平臺的關鍵組成模塊——GNSS數據采集軟件。因GNSS數據采集要求安全可靠,調研后引入了SFTP安全文件傳輸技術,并開展了基于SFTP技術的采集軟件方案的設計與實現。該方案保證了數據采集的簡便、穩定和安全,為服務平臺的整體建設與運行提供了有效保障。
服務平臺 采集軟件 SFTP 安全可靠
搭建GNSS(全球衛星導航系統)數據產品服務平臺(以下簡稱GNSS服務平臺),其目標是建設地震行業內GNSS數據產品存儲與共享中心的軟硬件平臺,實現GNSS產品常態發布與共享,提供數據在線繪圖、瀏覽下載和初步分析等功能,推進GNSS數據在地震預報中的應用。
GNSS數據采集軟件(以下簡稱GNSS采集軟件)作為該平臺的關鍵模塊之一,承擔核心的數據采集和存儲任務,直接影響整個平臺基礎數據的穩定性和連續性。另外GNSS相關數據屬于保密對象,因此對數據異地傳輸也提出了較高要求,必須保證安全不泄密。
針對GNSS數據傳輸和保密需求,調研后決定引入安全可靠的SFTP文件數據傳輸技術作為解決方案。本文通過分析SFTP的體系架構,介紹其Java接口的使用方法,最后設計并實現了基于SFTP的GNSS采集軟件。實際運行結果證明了該方案的可行性。
GNSS服務平臺核心研究內容涉及5塊,包括數據采集軟件、數據瀏覽與下載、B/S架構高速數據分析與交互、WebGIS地圖應用和用戶權限模塊等。系統框架如圖1虛線框所示。
從圖1可以看出GNSS采集軟件為基礎核心模塊,起到連接GNSS數據源和服務平臺的作用,為服務平臺持續提供穩定的、最新的數據產品,并最終為用戶服務。因此GNSS采集軟件的設計必須穩定可靠,并且保證數據安全。
從整個系統層次結構分析,GNSS服務平臺共分4個層次(劉耀等,2005),如圖2。IBM 3650服務器的硬件平臺和Linux Suse10系統位于最底2層,管理和調配整個系統的軟、硬件資源;應用程序位于最頂層,完成GNSS數據產品的采集、監控及Web交換與展示等工作。
文件系統和數據庫則處于中間層,它負責存儲和管理整個GNSS服務平臺的全局數據信息,提高了系統的數據共享性。數據庫主要用于存儲系統私有信息,譬如每次數據采集是否成功和具體條目的采集日志等。GNSS數據產品的數據源為文件形式,因此采用相應的文件形式存儲數據。
綜合圖1和圖2分析,GNSS采集軟件是GNSS服務平臺的重要組成部分,對實現系統的穩定運行起著至關重要的作用。
基于GNSS數據特點和實際運行需求,該軟件需要采用穩定、安全、可靠的數據傳輸技術。因為傳統的FTP文件傳輸為明文傳輸,無法保障數據安全。經調研,采用安全可靠的SFTP技術較為合適。將數據源的數據產品以定時、手動和觸發3種方式采集至服務平臺本地,以實現對外服務。
SFTP是Secure File Transfer Protocol的縮寫,即安全文件傳送協議,可以為傳輸文件安全加密。SFTP與FTP的語法和功能幾乎一樣。SFTP加密傳輸認證信息和數據,非常安全,只是傳輸效率比普通的FTP稍低。由于SFTP使用加密/解密技術,因此在對網絡安全性要求更高時,可以使用SFTP代替FTP(李明,2010)。SFTP是SSH內含的協議,只要SSHD服務器啟動即可,不需要啟動FTP服務器。圖3顯示了SFTP的工作模式,它是作為SSH2的一個子服務工作的。
目前,SFTP技術在電信、電力和銀行等對數據傳輸質量要求較高的領域已被成功應用,譬如在電力系統,利用SFTP將電能質量的歷史數據從省級系統傳輸到網級中心系統,從而解決了省級系統與網級系統間數據傳輸的安全性和可靠性問題(李果等,2012)。可以預見,作為一種安全可靠的文件傳輸技術,SFTP因其系統開銷小、傳輸效率較高、開發與維護簡單等特性,具有廣大的應用前景。
對于GNSS采集軟件而言,如何保證數據產品從遠程數據源穩定、安全、可靠地傳輸到本地是GNSS服務平臺建設的一個關鍵點。常用數據傳輸有2種方式:①webservice傳輸,該方式是基于HTTP協議的請求-應答型傳輸,在傳輸大量數據的時候容易出現通訊中斷和異常,因此只適合小量文件傳輸,不適合傳輸GNSS觀測和產品數據;②基于TCP連接的數據傳輸,因為本項目中數據源與服務平臺物理距離比較遠,中間需經過遠距離和復雜的網絡結構,維護該TCP復雜而且不穩定,故也不適于GNSS數據傳輸。鑒于GNSS數據傳輸量大,并且對數據的時效和安全要求較高,綜合利弊,可靠且安全的SFTP傳輸技術比較適用。
根據GNSS采集軟件的業務特點,需要自動和手動2種采集方式,并具有數據備份和系統監控功能,因此設計了基于SFTP協議的技術方案,如圖4,開發語言為Java。Java語言是一種面向對象的、分布式、解釋型、健壯安全的、可移植、性能優異、多線程的動態語言(王憶,2010)。考慮到該軟件涉及多線程,且今后可能跨平臺遷移等因素,采用Java語言比較合適。
首先要搭建SFTP的Java環境。下載SFTP的jar包jsch-0.1.48.jar,然后部署至項目的lib下即可。jsch是SSH2的一個純Java實現,它允許連接到一個SSHD服務器,封裝SFTP服務。通過該包使用Java可以很方便地實現SFTP客戶端程序從服務端獲取文件的功能。
根據圖4流程,GNSS采集軟件啟動3個線程,即自動采集、手動采集和監控線程,多線程技術保證各任務之間互不影響,并顯著提高程序效率。軟件采集到的數據以文件形式保存,運行過程中的采集日志和監控日志以數據庫形式保存。最后通過Web平臺對外提供數據服務。
下面對GNSS采集軟件涉及到的主要功能內容進行簡要說明。根據業務需求,GNSS采集軟件主要有數據自動采集和手動采集2大功能模塊,見圖5和圖6。

圖5 自動采集流程圖

圖6 手動采集流程圖
因為手動采集和自動采集功能較為相似,在此以自動采集為例說明其具體實現過程。自動采集程序設計方案是通過輪詢系統XML配置文件中的輪詢間隔,判斷是否符合采集條件。當符合條件時,采集軟件讀取數據源的連接參數,并執行基于SFTP協議的采集任務,完成任務后,將數據保存在本地文件系統,并記錄采集日志。下面是自動采集功能的核心代碼:
public void autoGather() {
try {
......
ExtUtil sf = new ExtUtil(); //實例化SFTP類
sql="select * from cpdata.gn_gather_ip order by data_id"; //獲取被采集對象要素
rs=stmt.executeQuery(sql);
while (rs.next()){
host = rs.getString("push_ip"); //被采集對象IP
port=rs.getInt("port") ; //被采集對象端口
username =rs.getString("username"); //被采集對象用戶名
password = rs.getString("password"); //被采集對象密碼
filedir = rs.getString("filedir"); //被采集對象的文件路徑
localdir = rs.getString("localdir");
//數據采集后的本地存儲路徑
ChannelSFTP sftp=sf.connect(host, port, username, password);
//與采集對象服務器建立SFTP連接
sf.getData(localdir, filedir, sftp); //通過SFTP采集遠程對象數據并存儲到本地
......
} catch(Exception e) {
e.printStackTrace(); //采集異常信息打屏
}
}
以上部分為采集軟件的后臺運行功能,通過采集軟件的Web平臺,用戶可以進行人機交互,比如開始或停止自動采集功能、執行手動采集和執行失敗數據重采等。另一方面,可以查看采集軟件的運行情況和日志,如歷史采集起始時間、采集類型和成功數目等。圖7為查詢2016年10月28—30日采集日志示例。
對于手動采集,其流程圖如圖6,與自動采集功能相似,不再贅述。手動采集與自動采集的主要差異在于其程序開始啟動后進行監聽,等待用戶的手動采集命令,而非自動輪詢。另外,為避免同一時間重復手動采集導致資源浪費,在執行采集任務前,程序會設置禁止手動采集的標志位,任務結束后改為允許。
通過上述采集軟件設計方案和實現細節,可以證明基于SFTP的數據采集方案能夠滿足業務需求。總結得到該軟件有以下幾方面特點:
(1)基于SFTP技術的設計方案適合GNSS采集軟件的業務特點,各項功能均正常實現,證明了該方案切實可行。
(2)采用SFTP技術的采集軟件,開發過程簡單高效,與FTP相似。且運行穩定,無特殊軟硬件要求,技術簡單易行,后期較易維護。
(3)采用SFTP技術能滿足GNSS數據產品的特殊性,滿足安全、可靠傳輸特殊數據的需求。也為將來有保密需求的數據傳輸方案提供借鑒。
本文調研了GNSS數據采集的業務需求,設計了基于SFTP的GNSS采集軟件,實現了GNSS數據產品的穩定、可靠傳輸,從而推進了整個GNSS服務平臺的建設工作,并對今后類似項目具有參考意義。當然,該軟件還不夠完善,仍需要在實際應用中加以不斷修改,譬如在軟件的自身狀態監控等方面可開展進一步研究。
李果,丁澤俊,楊勝輝等,2012.SFTP在網級與省級電能質量監測系統中的應用.華東電力,40(4):636—639.
李明,2010.SFTP應用.網管員世界,(24):92.
劉耀,李超良,2005.組態軟件架構的研究與設計.微計算機信息,21(8):86—87,119.
王憶,2010.基于Java技術在不同領域的應用與研究.計算機光盤軟件與應用,(5):148,137.
The Design and Implementation of GNSS Data Collection Software Based on SFTP
Huang Jingguo1), Li Zhengyuan1), Tao Ye1), Wang Jun1)and Zhao Bin2)
1) China Earthquake Networks Center, Beijing 100045, China 2) Earthquake Administration of Hubei Province, Wuhan 430071, China
Firstly, in this paper we outline the overall design framework of GNSS data product platform. And then we introduce an important module, GNSS data collection software. Further, following the introduction of Secure File Transfer Protocol (SFTP), we design and realize the gather software based on SFTP. The work mentioned above ensures the data security and platform construction.
Service platform; Gather software; SFTP; Security and reliability
1基金項目 GNSS系列數據產品在地震監測預報中的應用(地震行業專項,課題號:2012419006)
2017-01-11
黃經國,男,生于1984年。工程師。主要從事地震監測研究與軟件開發。E-mail:jingguo2010@163.com
黃經國,李正媛,陶冶,王軍,趙斌,2017.基于SFTP的GNSS數據采集軟件的設計與實現.震災防御技術,12(2):409—414. doi:10.11899/zzfy20170218