• ISSN 1673-5722
  • CN 11-5429/P

基于SFTP的GNSS数据采集软件的设计与实现

黄经国 李正媛 陶冶 王军 赵斌

黄经国, 李正媛, 陶冶, 王军, 赵斌. 基于SFTP的GNSS数据采集软件的设计与实现[J]. 震灾防御技术, 2017, 12(2): 409-414. doi: 10.11899/zzfy20170218
引用本文: 黄经国, 李正媛, 陶冶, 王军, 赵斌. 基于SFTP的GNSS数据采集软件的设计与实现[J]. 震灾防御技术, 2017, 12(2): 409-414. doi: 10.11899/zzfy20170218
Huang Jingguo, Li Zhengyuan, Tao Ye, Wang Jun, Zhao Bin. The Design and Implementation of GNSS Data Collection Software Based on SFTP[J]. Technology for Earthquake Disaster Prevention, 2017, 12(2): 409-414. doi: 10.11899/zzfy20170218
Citation: Huang Jingguo, Li Zhengyuan, Tao Ye, Wang Jun, Zhao Bin. The Design and Implementation of GNSS Data Collection Software Based on SFTP[J]. Technology for Earthquake Disaster Prevention, 2017, 12(2): 409-414. doi: 10.11899/zzfy20170218

基于SFTP的GNSS数据采集软件的设计与实现

doi: 10.11899/zzfy20170218
基金项目: 

GNSS系列数据产品在地震监测预报中的应用 2012419006

详细信息
    作者简介:

    黄经国, 男, 生于1984年。工程师。主要从事地震监测研究与软件开发。E-mail:jingguo2010@163.com

The Design and Implementation of GNSS Data Collection Software Based on SFTP

  • 摘要: 本文首先对GNSS数据产品服务平台的建设背景及其系统设计框架进行概述,进而介绍了平台的关键组成模块——GNSS数据采集软件。因GNSS数据采集要求安全可靠,调研后引入了SFTP安全文件传输技术,并开展了基于SFTP技术的采集软件方案的设计与实现。该方案保证了数据采集的简便、稳定和安全,为服务平台的整体建设与运行提供了有效保障。
  • 搭建GNSS(全球卫星导航系统)数据产品服务平台(以下简称GNSS服务平台),其目标是建设地震行业内GNSS数据产品存储与共享中心的软硬件平台,实现GNSS产品常态发布与共享,提供数据在线绘图、浏览下载和初步分析等功能,推进GNSS数据在地震预报中的应用。

    GNSS数据采集软件(以下简称GNSS采集软件)作为该平台的关键模块之一,承担核心的数据采集和存储任务,直接影响整个平台基础数据的稳定性和连续性。另外GNSS相关数据属于保密对象,因此对数据异地传输也提出了较高要求,必须保证安全不泄密。

    针对GNSS数据传输和保密需求,调研后决定引入安全可靠的SFTP文件数据传输技术作为解决方案。本文通过分析SFTP的体系架构,介绍其Java接口的使用方法,最后设计并实现了基于SFTP的GNSS采集软件。实际运行结果证明了该方案的可行性。

    GNSS服务平台核心研究内容涉及5块,包括数据采集软件、数据浏览与下载、B/S架构高速数据分析与交互、WebGIS地图应用和用户权限模块等。系统框架如图 1虚线框所示。

    图 1  GNSS数据产品服务平台体系结构
    Figure 1.  The architecture of GNSS data product platform

    图 1可以看出GNSS采集软件为基础核心模块,起到连接GNSS数据源和服务平台的作用,为服务平台持续提供稳定的、最新的数据产品,并最终为用户服务。因此GNSS采集软件的设计必须稳定可靠,并且保证数据安全。

    从整个系统层次结构分析,GNSS服务平台共分4个层次(刘耀等,2005),如图 2。IBM 3650服务器的硬件平台和Linux Suse10系统位于最底2层,管理和调配整个系统的软、硬件资源;应用程序位于最顶层,完成GNSS数据产品的采集、监控及Web交换与展示等工作。

    图 2  GNSS服务平台的层次结构
    Figure 2.  The hierarchy of GNSS product platform

    文件系统和数据库则处于中间层,它负责存储和管理整个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的一个子服务工作的。

    图 3  SFTP工作方式
    Figure 3.  The work mode of SFTP

    目前,SFTP技术在电信、电力和银行等对数据传输质量要求较高的领域已被成功应用,譬如在电力系统,利用SFTP将电能质量的历史数据从省级系统传输到网级中心系统,从而解决了省级系统与网级系统间数据传输的安全性和可靠性问题(李果等,2012)。可以预见,作为一种安全可靠的文件传输技术,SFTP因其系统开销小、传输效率较高、开发与维护简单等特性,具有广大的应用前景。

    对于GNSS采集软件而言,如何保证数据产品从远程数据源稳定、安全、可靠地传输到本地是GNSS服务平台建设的一个关键点。常用数据传输有2种方式:① webservice传输,该方式是基于HTTP协议的请求-应答型传输,在传输大量数据的时候容易出现通讯中断和异常,因此只适合小量文件传输,不适合传输GNSS观测和产品数据;② 基于TCP连接的数据传输,因为本项目中数据源与服务平台物理距离比较远,中间需经过远距离和复杂的网络结构,维护该TCP复杂而且不稳定,故也不适于GNSS数据传输。鉴于GNSS数据传输量大,并且对数据的时效和安全要求较高,综合利弊,可靠且安全的SFTP传输技术比较适用。

    根据GNSS采集软件的业务特点,需要自动和手动2种采集方式,并具有数据备份和系统监控功能,因此设计了基于SFTP协议的技术方案,如图 4,开发语言为Java。Java语言是一种面向对象的、分布式、解释型、健壮安全的、可移植、性能优异、多线程的动态语言(王忆,2010)。考虑到该软件涉及多线程,且今后可能跨平台迁移等因素,采用Java语言比较合适。

    图 4  GNSS采集软件框架图
    Figure 4.  The framework of GNSS collection software

    首先要搭建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  自动采集流程图
    Figure 5.  The framework of auto collection
    图 6  手动采集流程图
    Figure 6.  The framework of hand collection

    因为手动采集和自动采集功能较为相似,在此以自动采集为例说明其具体实现过程。自动采集程序设计方案是通过轮询系统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日采集日志示例。

    图 7  GNSS采集软件监控平台
    Figure 7.  The monitor platform of GNSS collection software

    对于手动采集,其流程图如图 6,与自动采集功能相似,不再赘述。手动采集与自动采集的主要差异在于其程序开始启动后进行监听,等待用户的手动采集命令,而非自动轮询。另外,为避免同一时间重复手动采集导致资源浪费,在执行采集任务前,程序会设置禁止手动采集的标志位,任务结束后改为允许。

    通过上述采集软件设计方案和实现细节,可以证明基于SFTP的数据采集方案能够满足业务需求。总结得到该软件有以下几方面特点:

    (1)基于SFTP技术的设计方案适合GNSS采集软件的业务特点,各项功能均正常实现,证明了该方案切实可行。

    (2)采用SFTP技术的采集软件,开发过程简单高效,与FTP相似。且运行稳定,无特殊软硬件要求,技术简单易行,后期较易维护。

    (3)采用SFTP技术能满足GNSS数据产品的特殊性,满足安全、可靠传输特殊数据的需求。也为将来有保密需求的数据传输方案提供借鉴。

    本文调研了GNSS数据采集的业务需求,设计了基于SFTP的GNSS采集软件,实现了GNSS数据产品的稳定、可靠传输,从而推进了整个GNSS服务平台的建设工作,并对今后类似项目具有参考意义。当然,该软件还不够完善,仍需要在实际应用中加以不断修改,譬如在软件的自身状态监控等方面可开展进一步研究。

  • 图  1  GNSS数据产品服务平台体系结构

    Figure  1.  The architecture of GNSS data product platform

    图  2  GNSS服务平台的层次结构

    Figure  2.  The hierarchy of GNSS product platform

    图  3  SFTP工作方式

    Figure  3.  The work mode of SFTP

    图  4  GNSS采集软件框架图

    Figure  4.  The framework of GNSS collection software

    图  5  自动采集流程图

    Figure  5.  The framework of auto collection

    图  6  手动采集流程图

    Figure  6.  The framework of hand collection

    图  7  GNSS采集软件监控平台

    Figure  7.  The monitor platform of GNSS collection software

  • 李果, 丁泽俊, 杨胜辉等, 2012. SFTP在网级与省级电能质量监测系统中的应用.華東電力, 40 (4):636-639. http://www.cnki.com.cn/Article/CJFDTOTAL-HDDL201204040.htm
    李明, 2010. SFTP应用.网管员世界, (24):92. http://www.cnki.com.cn/Article/CJFDTOTAL-HDDL201204040.htm
    刘耀, 李超良, 2005.组态软件架构的研究与设计.微计算机信息, 21(8):86-87, 119. http://cdmd.cnki.com.cn/Article/CDMD-10422-1014307608.htm
    王忆, 2010.基于Java技术在不同领域的应用与研究.计算机光盘软件与应用, (5):148, 137. http://cdmd.cnki.com.cn/Article/CDMD-10674-2002101851.htm
  • 加载中
图(7)
计量
  • 文章访问数:  106
  • HTML全文浏览量:  17
  • PDF下载量:  10
  • 被引次数: 0
出版历程
  • 收稿日期:  2017-01-11
  • 刊出日期:  2017-06-01

目录

/

返回文章
返回