弱网络环境下全天候数据采集的研究与应用
2015-04-20李鸽朋张绍川
李鸽朋 张绍川
摘 要 针对电力野外作业人员在弱网络环境下使用电力线路巡检管理系统时数据采集难的问题进行深入研究,利用Android系统的信息通讯技术平台,结合GPS定位系统,提出了将离线缓存管理与数据云同步技术相结合的全天候数据采集方案,并率先在眉山供电公司输电线路的野外作业现场得到了成功验证,下一步可在林业、国土、地质等多个有类似应用场景的行业部门进行复制推广。
【关键词】输电线路 野外作业 GPS定位系统 离线缓存管理 Handle机制 数据云同步 差量文件
1 引言
电力线路巡检管理系统是为了解决使用传统工作方法开展电力线路巡检工作时容易出现的巡视不到位、作业不规范和检查取证难等问题而定制开发的信息化管理工具。其设计思路通常是:巡检人员在作业现场使用PDA终端进行数据采集(包括GPS坐标和现场照片),并通过无线网络将数据实时上传到服务器上。如果在强网络环境下应用该系统,效果确实很好。然而在弱网络环境下(2G/3G/4G网络信号都不好的野外现场),由于PDA与服务器连接不畅会导致数据同步困难,出现管理盲区,甚至产生安全隐患。
针对这个课题,我们提出以下解决思路:在强网络环境下继续沿用实时采集上传模式;在弱网络环境下自动通过Handle异步下载切换为离线缓存模式;当网络信号由弱变强时,自动切换至Cloudsync数据云同步模式进行数据上传。这种全天候数据采集技术能够不受网络条件的限制,通过无缝覆盖消除管理盲区。
2 技术架构
开发平台采用java开发框架,数据库采用mysql,web服务器采用tomcat。整个系统的逻辑架构采用经典三层架构的方式,即表示层、业务逻辑层、数据层。如图1。
表示层是用户看到并与之交互的界面。对PC端的用户来说,Web应用程序的表示层就是展现在IE客户端中的通过HTML元素组成的界面;对于移动终端用户来说表示层就是装载在移动终端中的客户端界面,这些客户端也是由类似的XML语言编写,通过优化处理来提高客户端的好用性和易用性。
业务逻辑层在系统中用于做一些有效性验证的工作,以更好的保证程序运行的健壮性。如完成数据添加、修改和查询业务等;不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证;用户权限的合法性判断等;通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的逻辑有关。
数据层主要是用于定义封装数据模型,存放说有的数据元素。数据层是整个系统的数据来源。在此次巡检系统中,数据层的由本系统的数据库中来,也可以由企业原IT系统对接获得。
该平台的移动终端基于Android平台开发,Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
系统管理PC端和服务器端采用基于B/S的J2EE三层体系架构(Browser/Server,浏览器/服务器模式),该架构是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易。
3 关键技术
3.1 离线缓存管理
针对文本数据和图片数据占用资源情况的不同,提出两种离线缓存管理方法,以解决弱网络环境下客户端与服务器之间数据连接不畅的问题。
(1)文本离线缓存管理。在强网络环境下自动下载基础数据文件(如线路和杆塔属性),在PDA客户端上生成一份相同的拷贝,同时会把链接地址、下载时间和数据有效期等相关信息一起存放到离线数据库中。以后需要调用相同类型的数据时,程序会首先根据链接地址从数据库中查询,如果查询到的当前时间并未超出数据有效期,就直接加载PDA客户端上的离线数据。
这里提到的基础数据下载模式是利用Handler机制通知UI线程处理消息,启动异步线程执行下载操作,获取到服务器资源后再通过Handler Message更新UI线程。如图3。
在主线程和新线程之间会使用MessageQueue队列,供Handler方法从中调用相关消息进行处理。如图4。
当完成离线缓存步骤后需要调用数据时,客户端与服务器之间的交互模式如图5。
这种方法可以灵活存放文件的属性(通常存放在/data/
(2)图片离线缓存管理。现场照片可以根据当前日期和时间命名后缓存到SD卡中的指定图片缓存目录,同时在数据库中做好相应记录,对应两个关键字段,分别是该图片的下载地址和本机地址。读取图片时首先使用Picture.lastModified()方法得到图片文件的最后修改时间,并与当前时间比较判断是否过期,然后根据比较结果选择是根据本地地址在SD卡中检索缓存文件,还是根据下载地址连接服务器进行下载。
由于图片资源会占用较大的内存空间,所以在离线缓存时要做适当的优化。有两种方法:
第一种方法是将图片直接存入SD卡并采用LRU(最少页面置换)算法保证SD卡仅被占用少量空间,以提高加载速度。
第二种办法是在内存中开辟两个缓存区,按照一定规则将图片分类存放,然后设置过期时间和LRU规则。通常是把常用数据放入缓存A,不常用数据放入缓存B。当要获取数据时先从A中查询,如果A中没有再去B中查询。B中的数据主要是A中LRU出来的数据,这里的内存回收主要针对B内存,从而保持A中的数据绝大部分是经常被调用的有效数据。
另外由于作业现场图片较多(每个作业现场都要拍摄1-2张照片且存储在终端设备中),如果对图片的缓存管理不当,会造成图片文件冗余、消耗极大存贮空间,调用时内存占用率高造成系统运行不流畅,这对系统架构的设计提出了严峻的考验。相应的解决方案为:
一是完成拍照后,首先要在保证图片清晰的前提下利用压缩算法处理成更先进的PNG文件格式,然后再做缓存。PNG格式图片因其高保真性、透明性及文件体积较小等特性,被广泛应用于网页设计、移动应用程序开发中,以此保证图片文件在高保真的前提下体积最小。
二是将各个PNG文件进行MD5算法唯一性验证,对比相同的图片文件,针对每项电力设备让系统始终只保存一个PNG文件,以此保持图片文件不冗余。
三是在设计软件架构时采用符合ISRM(Improve Software Resource Manage 优化软件资源管理)的设计标准,建立图片堆栈缓存(Images Stack Cache),将图片在调用前就预读到以堆栈形式保存的内存地址空间中,以此保证大量图片并发调用时系统依然运行流畅。
3.2 数据云同步
数据云同步Cloudsync技术是一套涉及移动终端和服务器端的异构系统解决方案。为保证数据的一致性,不但终端设备要向服务器同步作业现场采集的数据,而且服务器也要向终端同步线路与杆塔属性数据。
云同步系统包括以下功能实体(如图8):
(1)终端客户端:安装在用户手机终端上,与主同步模块交互,完成终端数据和云端同步。
(2)PC客户端:安装在用户PC上,与主同步模块交互,完成PC数据和云端同步。
(3)用户Web门户:运行在平台侧,向用户提供己经同步到云端数据的浏览、增加,删除、修改等操作。
(4)主同步模块:运行在平台侧,接收所有终端客户端的同步请求,与客户端交互完成数据与文件同步。
(5)用户及业务数据库:关系型数据库,用于保存用户、业务数据以及同步的记录型数据。
(6)对象存储系统:对象存储用于保存同步的文件型数据。
数据在云端和客户端传输可采用全量和差量的方法。全量文件上传采用 HTTP POST方法,全量文件下载采用直接通过URL(Uniform Resource Location) 下载的方式。对于可编辑性的文件,为了在文件同步时减少文件的传输数据量, 降低占用带宽,考虑在客户端和云端之间使用文件差异同步算法(差量同步算 法)。目前针对同步服务提出了多种快速文件同步算法;主要分为单轮和多轮同步,单轮与多轮指的是在同步过程中需要进行数据交互的轮数。
下面通过流程图来展示云端和客户端之间的交互过程(如图9):
图9所示流程说明如下:
(1)终端发送文件同步请求消息到云端。
(2)服务端收到同步请求消息后进行同步类型判断,需要判断请求文件的操作是新增,删除还是更新,并返回请求消息。
(3)终端收到服务端的请求消息之后,发送hash文件续传请求消息。
(4)服务端收到续传请求消息之后在判断没有其它同步请求消息之后,从系统的临时文件中获取hash文件总长,并返回给终端。
(5)终端收到hash文件长度后上传剩余的数据片到服务端。
(6)当云端接收上传物理文件后,获取该文件的哈希值。将物理文件信息入库, 并在存储介质上存储文件实体;为了能对物理文件分散存储,采用文件哈希值获取到文件分散值(取哈希值前两位,或者用哈希值整除100获取余 数)。
(7)发送传输成功消息到终端。
上述流程描述的是对于差量文件的同步文件传输过程,不仅大大减少了网络传输的数据流量,而且提高了传输效率。
另外,通过数据云同步技术提供的客户端可视化配置界面,只需在终端设备中对服务器中心数据库(Center DataBase)服务器地址、中心数据库授权使用的用户名和密码进行配置便可完成数据库同步参数设置。配置一次,系统自动保存配置信息,之后的每次操作都不用再关心配置问题。
中心数据库需要部署一台Apache Tomcat、MySQL数据库,通过在 Cloudsync提供的中心数据库可视化配置界面输入JDBC 驱动地址,数据库用户名,数据库密码和Tomcat服务器地址中心数据库即可正式工作了。中心数据库配置完成后,即可通过浏览器登录中心数据库提供的配置,管理界面对客户端数据库同步进行配置和授权。
4 结束语
此项成果通过离线缓存管理与数据云同步相结合的模式,能够实现在弱网络环境下的全天候数据采集与及时上传功能,不仅提高了工作效率,而且在很大程度上杜绝了野外作业现场人员考勤难、执行不到位,出工不出力所导致的管理盲区和安全风险,可广泛应用于电力、测绘、国土、环境、水利、农业、林业等所有需要依靠移动GIS终端协助进行精准数据采集、快速数据传输和高效数据管理的行业。
作者简介
李鸽朋(1981-),男,四川省绵阳市人。硕士研究生学历。现为国网眉山供电公司工程师。主要研究方向是电子技术及通信技术的研究。
张绍川(1983-),男,湖南省怀化市人。大专学历。现为国网眉山供电公司助理工程师。主要研究方向是发电厂及电力系统的研究。
作者单位
国网眉山供电公司 四川省眉山市 610032