黃經(jīng)國 李正媛 陶 冶 王 軍 趙 斌
?
基于SFTP的GNSS數(shù)據(jù)采集軟件的設(shè)計與實現(xiàn)1
黃經(jīng)國1)李正媛1)陶 冶1)王 軍1)趙 斌2)
1)中國地震臺網(wǎng)中心,北京 100045 2)湖北省地震局,武漢 430071
本文首先對GNSS數(shù)據(jù)產(chǎn)品服務(wù)平臺的建設(shè)背景及其系統(tǒng)設(shè)計框架進(jìn)行概述,進(jìn)而介紹了平臺的關(guān)鍵組成模塊——GNSS數(shù)據(jù)采集軟件。因GNSS數(shù)據(jù)采集要求安全可靠,調(diào)研后引入了SFTP安全文件傳輸技術(shù),并開展了基于SFTP技術(shù)的采集軟件方案的設(shè)計與實現(xiàn)。該方案保證了數(shù)據(jù)采集的簡便、穩(wěn)定和安全,為服務(wù)平臺的整體建設(shè)與運行提供了有效保障。
服務(wù)平臺 采集軟件 SFTP 安全可靠
搭建GNSS(全球衛(wèi)星導(dǎo)航系統(tǒng))數(shù)據(jù)產(chǎn)品服務(wù)平臺(以下簡稱GNSS服務(wù)平臺),其目標(biāo)是建設(shè)地震行業(yè)內(nèi)GNSS數(shù)據(jù)產(chǎn)品存儲與共享中心的軟硬件平臺,實現(xiàn)GNSS產(chǎn)品常態(tài)發(fā)布與共享,提供數(shù)據(jù)在線繪圖、瀏覽下載和初步分析等功能,推進(jìn)GNSS數(shù)據(jù)在地震預(yù)報中的應(yīng)用。
GNSS數(shù)據(jù)采集軟件(以下簡稱GNSS采集軟件)作為該平臺的關(guān)鍵模塊之一,承擔(dān)核心的數(shù)據(jù)采集和存儲任務(wù),直接影響整個平臺基礎(chǔ)數(shù)據(jù)的穩(wěn)定性和連續(xù)性。另外GNSS相關(guān)數(shù)據(jù)屬于保密對象,因此對數(shù)據(jù)異地傳輸也提出了較高要求,必須保證安全不泄密。
針對GNSS數(shù)據(jù)傳輸和保密需求,調(diào)研后決定引入安全可靠的SFTP文件數(shù)據(jù)傳輸技術(shù)作為解決方案。本文通過分析SFTP的體系架構(gòu),介紹其Java接口的使用方法,最后設(shè)計并實現(xiàn)了基于SFTP的GNSS采集軟件。實際運行結(jié)果證明了該方案的可行性。
GNSS服務(wù)平臺核心研究內(nèi)容涉及5塊,包括數(shù)據(jù)采集軟件、數(shù)據(jù)瀏覽與下載、B/S架構(gòu)高速數(shù)據(jù)分析與交互、WebGIS地圖應(yīng)用和用戶權(quán)限模塊等。系統(tǒng)框架如圖1虛線框所示。
從圖1可以看出GNSS采集軟件為基礎(chǔ)核心模塊,起到連接GNSS數(shù)據(jù)源和服務(wù)平臺的作用,為服務(wù)平臺持續(xù)提供穩(wěn)定的、最新的數(shù)據(jù)產(chǎn)品,并最終為用戶服務(wù)。因此GNSS采集軟件的設(shè)計必須穩(wěn)定可靠,并且保證數(shù)據(jù)安全。
從整個系統(tǒng)層次結(jié)構(gòu)分析,GNSS服務(wù)平臺共分4個層次(劉耀等,2005),如圖2。IBM 3650服務(wù)器的硬件平臺和Linux Suse10系統(tǒng)位于最底2層,管理和調(diào)配整個系統(tǒng)的軟、硬件資源;應(yīng)用程序位于最頂層,完成GNSS數(shù)據(jù)產(chǎn)品的采集、監(jiān)控及Web交換與展示等工作。
文件系統(tǒng)和數(shù)據(jù)庫則處于中間層,它負(fù)責(zé)存儲和管理整個GNSS服務(wù)平臺的全局?jǐn)?shù)據(jù)信息,提高了系統(tǒng)的數(shù)據(jù)共享性。數(shù)據(jù)庫主要用于存儲系統(tǒng)私有信息,譬如每次數(shù)據(jù)采集是否成功和具體條目的采集日志等。GNSS數(shù)據(jù)產(chǎn)品的數(shù)據(jù)源為文件形式,因此采用相應(yīng)的文件形式存儲數(shù)據(jù)。
綜合圖1和圖2分析,GNSS采集軟件是GNSS服務(wù)平臺的重要組成部分,對實現(xiàn)系統(tǒng)的穩(wěn)定運行起著至關(guān)重要的作用。
基于GNSS數(shù)據(jù)特點和實際運行需求,該軟件需要采用穩(wěn)定、安全、可靠的數(shù)據(jù)傳輸技術(shù)。因為傳統(tǒng)的FTP文件傳輸為明文傳輸,無法保障數(shù)據(jù)安全。經(jīng)調(diào)研,采用安全可靠的SFTP技術(shù)較為合適。將數(shù)據(jù)源的數(shù)據(jù)產(chǎn)品以定時、手動和觸發(fā)3種方式采集至服務(wù)平臺本地,以實現(xiàn)對外服務(wù)。
SFTP是Secure File Transfer Protocol的縮寫,即安全文件傳送協(xié)議,可以為傳輸文件安全加密。SFTP與FTP的語法和功能幾乎一樣。SFTP加密傳輸認(rèn)證信息和數(shù)據(jù),非常安全,只是傳輸效率比普通的FTP稍低。由于SFTP使用加密/解密技術(shù),因此在對網(wǎng)絡(luò)安全性要求更高時,可以使用SFTP代替FTP(李明,2010)。SFTP是SSH內(nèi)含的協(xié)議,只要SSHD服務(wù)器啟動即可,不需要啟動FTP服務(wù)器。圖3顯示了SFTP的工作模式,它是作為SSH2的一個子服務(wù)工作的。
目前,SFTP技術(shù)在電信、電力和銀行等對數(shù)據(jù)傳輸質(zhì)量要求較高的領(lǐng)域已被成功應(yīng)用,譬如在電力系統(tǒng),利用SFTP將電能質(zhì)量的歷史數(shù)據(jù)從省級系統(tǒng)傳輸?shù)骄W(wǎng)級中心系統(tǒng),從而解決了省級系統(tǒng)與網(wǎng)級系統(tǒng)間數(shù)據(jù)傳輸?shù)陌踩院涂煽啃詥栴}(李果等,2012)。可以預(yù)見,作為一種安全可靠的文件傳輸技術(shù),SFTP因其系統(tǒng)開銷小、傳輸效率較高、開發(fā)與維護(hù)簡單等特性,具有廣大的應(yīng)用前景。
對于GNSS采集軟件而言,如何保證數(shù)據(jù)產(chǎn)品從遠(yuǎn)程數(shù)據(jù)源穩(wěn)定、安全、可靠地傳輸?shù)奖镜厥荊NSS服務(wù)平臺建設(shè)的一個關(guān)鍵點。常用數(shù)據(jù)傳輸有2種方式:①webservice傳輸,該方式是基于HTTP協(xié)議的請求-應(yīng)答型傳輸,在傳輸大量數(shù)據(jù)的時候容易出現(xiàn)通訊中斷和異常,因此只適合小量文件傳輸,不適合傳輸GNSS觀測和產(chǎn)品數(shù)據(jù);②基于TCP連接的數(shù)據(jù)傳輸,因為本項目中數(shù)據(jù)源與服務(wù)平臺物理距離比較遠(yuǎn),中間需經(jīng)過遠(yuǎn)距離和復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),維護(hù)該TCP復(fù)雜而且不穩(wěn)定,故也不適于GNSS數(shù)據(jù)傳輸。鑒于GNSS數(shù)據(jù)傳輸量大,并且對數(shù)據(jù)的時效和安全要求較高,綜合利弊,可靠且安全的SFTP傳輸技術(shù)比較適用。
根據(jù)GNSS采集軟件的業(yè)務(wù)特點,需要自動和手動2種采集方式,并具有數(shù)據(jù)備份和系統(tǒng)監(jiān)控功能,因此設(shè)計了基于SFTP協(xié)議的技術(shù)方案,如圖4,開發(fā)語言為Java。Java語言是一種面向?qū)ο蟮?、分布式、解釋型、健壯安全的、可移植、性能?yōu)異、多線程的動態(tài)語言(王憶,2010)。考慮到該軟件涉及多線程,且今后可能跨平臺遷移等因素,采用Java語言比較合適。
首先要搭建SFTP的Java環(huán)境。下載SFTP的jar包jsch-0.1.48.jar,然后部署至項目的lib下即可。jsch是SSH2的一個純Java實現(xiàn),它允許連接到一個SSHD服務(wù)器,封裝SFTP服務(wù)。通過該包使用Java可以很方便地實現(xiàn)SFTP客戶端程序從服務(wù)端獲取文件的功能。
根據(jù)圖4流程,GNSS采集軟件啟動3個線程,即自動采集、手動采集和監(jiān)控線程,多線程技術(shù)保證各任務(wù)之間互不影響,并顯著提高程序效率。軟件采集到的數(shù)據(jù)以文件形式保存,運行過程中的采集日志和監(jiān)控日志以數(shù)據(jù)庫形式保存。最后通過Web平臺對外提供數(shù)據(jù)服務(wù)。
下面對GNSS采集軟件涉及到的主要功能內(nèi)容進(jìn)行簡要說明。根據(jù)業(yè)務(wù)需求,GNSS采集軟件主要有數(shù)據(jù)自動采集和手動采集2大功能模塊,見圖5和圖6。
圖5 自動采集流程圖
圖6 手動采集流程圖
因為手動采集和自動采集功能較為相似,在此以自動采集為例說明其具體實現(xiàn)過程。自動采集程序設(shè)計方案是通過輪詢系統(tǒng)XML配置文件中的輪詢間隔,判斷是否符合采集條件。當(dāng)符合條件時,采集軟件讀取數(shù)據(jù)源的連接參數(shù),并執(zhí)行基于SFTP協(xié)議的采集任務(wù),完成任務(wù)后,將數(shù)據(jù)保存在本地文件系統(tǒng),并記錄采集日志。下面是自動采集功能的核心代碼:
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");
//數(shù)據(jù)采集后的本地存儲路徑
ChannelSFTP sftp=sf.connect(host, port, username, password);
//與采集對象服務(wù)器建立SFTP連接
sf.getData(localdir, filedir, sftp); //通過SFTP采集遠(yuǎn)程對象數(shù)據(jù)并存儲到本地
......
} catch(Exception e) {
e.printStackTrace(); //采集異常信息打屏
}
}
以上部分為采集軟件的后臺運行功能,通過采集軟件的Web平臺,用戶可以進(jìn)行人機(jī)交互,比如開始或停止自動采集功能、執(zhí)行手動采集和執(zhí)行失敗數(shù)據(jù)重采等。另一方面,可以查看采集軟件的運行情況和日志,如歷史采集起始時間、采集類型和成功數(shù)目等。圖7為查詢2016年10月28—30日采集日志示例。
對于手動采集,其流程圖如圖6,與自動采集功能相似,不再贅述。手動采集與自動采集的主要差異在于其程序開始啟動后進(jìn)行監(jiān)聽,等待用戶的手動采集命令,而非自動輪詢。另外,為避免同一時間重復(fù)手動采集導(dǎo)致資源浪費,在執(zhí)行采集任務(wù)前,程序會設(shè)置禁止手動采集的標(biāo)志位,任務(wù)結(jié)束后改為允許。
通過上述采集軟件設(shè)計方案和實現(xiàn)細(xì)節(jié),可以證明基于SFTP的數(shù)據(jù)采集方案能夠滿足業(yè)務(wù)需求。總結(jié)得到該軟件有以下幾方面特點:
(1)基于SFTP技術(shù)的設(shè)計方案適合GNSS采集軟件的業(yè)務(wù)特點,各項功能均正常實現(xiàn),證明了該方案切實可行。
(2)采用SFTP技術(shù)的采集軟件,開發(fā)過程簡單高效,與FTP相似。且運行穩(wěn)定,無特殊軟硬件要求,技術(shù)簡單易行,后期較易維護(hù)。
(3)采用SFTP技術(shù)能滿足GNSS數(shù)據(jù)產(chǎn)品的特殊性,滿足安全、可靠傳輸特殊數(shù)據(jù)的需求。也為將來有保密需求的數(shù)據(jù)傳輸方案提供借鑒。
本文調(diào)研了GNSS數(shù)據(jù)采集的業(yè)務(wù)需求,設(shè)計了基于SFTP的GNSS采集軟件,實現(xiàn)了GNSS數(shù)據(jù)產(chǎn)品的穩(wěn)定、可靠傳輸,從而推進(jìn)了整個GNSS服務(wù)平臺的建設(shè)工作,并對今后類似項目具有參考意義。當(dāng)然,該軟件還不夠完善,仍需要在實際應(yīng)用中加以不斷修改,譬如在軟件的自身狀態(tài)監(jiān)控等方面可開展進(jìn)一步研究。
李果,丁澤俊,楊勝輝等,2012.SFTP在網(wǎng)級與省級電能質(zhì)量監(jiān)測系統(tǒng)中的應(yīng)用.華東電力,40(4):636—639.
李明,2010.SFTP應(yīng)用.網(wǎng)管員世界,(24):92.
劉耀,李超良,2005.組態(tài)軟件架構(gòu)的研究與設(shè)計.微計算機(jī)信息,21(8):86—87,119.
王憶,2010.基于Java技術(shù)在不同領(lǐng)域的應(yīng)用與研究.計算機(jī)光盤軟件與應(yīng)用,(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系列數(shù)據(jù)產(chǎn)品在地震監(jiān)測預(yù)報中的應(yīng)用(地震行業(yè)專項,課題號:2012419006)
2017-01-11
黃經(jīng)國,男,生于1984年。工程師。主要從事地震監(jiān)測研究與軟件開發(fā)。E-mail:jingguo2010@163.com
黃經(jīng)國,李正媛,陶冶,王軍,趙斌,2017.基于SFTP的GNSS數(shù)據(jù)采集軟件的設(shè)計與實現(xiàn).震災(zāi)防御技術(shù),12(2):409—414. doi:10.11899/zzfy20170218