基于SFTP的GNSS数据采集软件的设计与实现1
2017-10-13黄经国李正媛
黄经国 李正媛 陶 冶 王 军 赵 斌
基于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采集软件。实际运行结果证明了该方案的可行性。
1 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种方式采集至服务平台本地,以实现对外服务。
2 安全可靠的SFTP技术
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传输技术比较适用。
3 GNSS采集软件的设计与实现
根据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数据产品的特殊性,满足安全、可靠传输特殊数据的需求。也为将来有保密需求的数据传输方案提供借鉴。
4 结束语
本文调研了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