朱利鲁 苏晓露 阎克栋
(中国科学院电子学研究所苏州研究院 江苏 苏州 215123) (苏州市空天大数据智能应用技术重点实验室 江苏 苏州 215123)
近年来,随着生产生活高度信息化,地理信息服务在公共交通、社交平台、购物娱乐以及智慧城市、政府决策等领域逐渐成为各类服务所依托的基础模块。各行业各部门积累了大量的带有时间属性和空间属性的数据资源和服务应用,但由于缺乏有效整合,形成了为数众多的“资源孤岛”,造成了资源浪费和系统重复建设等问题[1-3]。因此,为了提高资源利用效率和降低生产、管理成本,通过引入“资源整合”技术,形成多维度的时空信息资源共享服务体系成为解决问题的关键,具备高度整合能力的资源共享平台应运而生。同时,由于时空数据来源和引接方式的不同,形成了基于不同平台、不同协议,种类繁多,结构各异的数据形态,在时空信息资源共享平台的服务互操作、数据同步、实体文件传输等模块面临诸多技术瓶颈。本文基于早先应用实践,针对现有技术成果进行深入研究分析,结合时空信息资源共享平台的技术要求,提出一种面向多源异构时空大数据资源的集成框架-STDRIF,解决各类时空数据资源、服务资源整合过程中遇到的问题。
互通互联的资源共享服务体系需要集成远程方法调用、数据传输、数据同步、消息分发等多种关键技术,面向不同数据、不同环境形成完整的技术框架。早先的资源集成框架大多采用面向服务的体系架构(service oriented architecture,SOA)思想[4-5],具体实现有Web Service、CORBA、DCOM和RMI等方式。但随着服务规模的不断扩大、性能指标要求的不断提升,Web Service等共享实现方式的性能缺陷和功能单一性逐渐显露[6]。无论是在网络带宽还是CPU开销方面,都会给应用造成严重的性能问题,以至于该技术无法适用于许多高性能以及互操作极为频繁的场景。CORBA和DCOM因其庞杂的技术标准以及平台兼容性方面的缺点而难以广泛推广[7]。RMI是Java语言的远程调用,两端的程序语言必须是Java实现,无法支持跨语言平台的通信[8]。另外,在数据集成方面,早先的集成框架尝试将数据资源转化为标准的方式(XML)进行访问,但依然面临着效率低下的问题;在数据同步方面,早先主流的数据同步解决方案有数据库厂商提供的数据同步技术和基于捕获变化技术自行定制开发的数据同步技术:厂商提供的同步技术往往都不支持异构数据库的同步,难以满足要求。很多学者都提出了基于捕获技术的数据库同步技术,文献[9]利用触发器与存储过程结合从源数据库子系统中获取变化数据,文献[10]提出了一个改进的主文本更新法与时间戳相结合的策略。但这些方法没有统一的技术标准,存在各种限制条件,不适用于大型应用系统。同时,以往的资源集成框架主要关注于服务资源和数据库资源的集成,对于消息资源和非结构化数据资源的传输没有给出完整、可用的实现方案。综上所述,现有方案在性能、兼容性等方面都存在问题,而且在服务互操作,消息传输、数据同步以及数据传输等关键技术上也没有形成一套基于时空数据特点的,有针对性的完整高效异构资源集成方案。
本文提出的基于异构时空大数据资源集成框架(下文简称资源集成框架),主要是针对当前时空数据资源集成技术存在的不足以及资源整合对开发复杂度和性能等方面的要求,旨在解决大规模数据资源在网络化服务调用、消息通信、数据同步和数据传输等过程中出现的问题,通过融合各类技术方案,形成一套完整的、具有实用价值的时空数据资源共享技术解决方案。
资源集成框架旨在实现不同应用系统之间一类时空数据、消息、服务的集成,使它们像一个整体一样进行业务信息交互,从而使业务、管理、资源等各个环节达到协调运转、效率优化的目的。其中这些资源包括已建、在建的基于不同技术平台实现的,并且运行于不同网络结构中的资源。同时,资源集成框架能够支持C/S和B/S等不同架构模式的第三方应用对资源的访问,实现多种终端的统一接入。本文提出的资源集成框架总体分为四个模块,分别是服务调用模块、消息管理模块、数据同步模块以及数据传输模块,如图1所示。
图1 时空大数据资源集成框架
通过四个模块的技术融合和协调运转,资源集成框架可以有效地集成基于不同平台、不同开发语言的时空数据服务资源,多品类时相影像数据资源,海量消息资源,关系型、非关系型数据库资源以及文件资源等。各类时空数据资源通过模块进行整合,实现统一调度管理。各行业部门可基于该资源集成框架定制实现对现有资源的整合以及新接资源的二次应用开发,同时可以调用其他中心的数据、服务资源实现资源统筹,大大减少资源共享成本。
服务集成模块如图2所示,设计并实现服务通信框架(Service communication framework,SCF)为分布式应用程序的开发、部署提供了一个功能完善的平台,可以整合不同平台、多种语言开发的服务。在实际工程中,应用程序需要的常常不止是远程通信能力,还需要按需启动、代理分发、异步事件分发、应用配置、应用补丁升级等诸如此类的服务。服务集成模块通过可视化界面可以查看各个节点的应用状态,实现应用的全生命周期管理。服务部署系统可以实现多节点应用的快速部署以及应用的统一升级发布。不同平台的服务集成则通过三层架构完成服务接入与调用。
图2 服务集成模块框架图
负载均衡层作为服务集成的核心模块起着承上启下的作用。主要由服务注册和服务调度两部分组成。服务注册通过建立注册中心将服务集中管理,当接收到客户端请求时,从注册信息中找到已注册的服务信息,通过调度算法判断出哪个节点的服务有空闲资源可以处理此请求,然后将客户端请求代理直接与该结点对应的服务连接。服务接入需要解决不同服务资源的发布、注册问题。利用接口定义语言定义服务对象的服务接口,形成服务接口描述文件;根据客户端和服务端开发语言的不同,利用编译工具分别生成与两端开发语言对应的接口程序;在服务端,继承服务接口,完成服务功能的实现;将完成的服务与对象适配器进行绑定。服务调用层使客户端可以快速获取所调用的服务完成请求。客户端需要配置与注册中心通信的连接,将请求发送到注册中心,通过负载均衡层高效地获取空闲的服务资源并与之建立连接。这里需特别注意的是,服务调用层使用间接绑定完成客户端到服务端的对象调用。间接绑定让客户端不再需要指定代理的端点信息[11],代理的端点由注册中心动态确定。
各类地理信息系统中存在多种类型的数据库以及文件系统,数据同步、数据传输是一个极为棘手的问题。数据同步模块框架如图3所示,采用增量日志的方式捕捉各类数据库数据变化,通过模拟SETL数据仓储过程实现了MySQL、Oracle以及HBase等异构数据同步。同时,文件作为数据库中某条数据记录的附件,在数据表发生变化时随数据一起同步。数据资源同步模块支持实时数据同步、多点数据插入、附件同步、异地机房同步、数据映射、过滤等多种数据资源同步需求。
图3 数据同步模块框架图
数据库表发生变更时,变更监听组件通过解析各类数据库的日志文件获取变更信息,将变更信息传输到各个Node节点。Node节点模拟数据仓库过程通过数据接入和数据提取对变更信息进行提取,提取后的信息可以通过网络传输到异地Node节点。异地Node节点获取信息后根据目标数据库进行数据转换,生成可用查询语句,最后通过数据载入将变更数据更新到目标数据库。通过管理平台可以查看数据同步、传输的实时情况,配置各个Node节点的参数,统一管理各类数据资源。Zookeeper在模块中协调各个Node节点的工作,统一管理配置信息。
针对地理空间信息系统中存在大量的时空影像数据,这些影像数据格式多种多样,大小由几十KB到几十GB不等。如何高效安全地传输共享这些资源成为异构资源集成框架的重点。利用数据传输模块可以整合多品类时空影像资源,实现批量传输和断点续传。数据传输模块框架如图4所示,各个服务可以调用消息管理模块中不同的消息队列完成消息传输,服务调用cTrans传输服务完成影像实体的传输。
图4 数据传输模块框架图
图4中,服务A发布影像实体,服务B需要获取服务A所发布的影像,消息及影像实体的传输流程如下:
(1) 服务A发布影像实体,调用cTrans传输服务获取影像实体并存入第三方存储模块;
(2) cTrans传输服务根据影像实体的存储情况制作种子,种子中包含从第三方存储获取该影像实体的相关信息;
(3) 服务A通过消息管理模块选择相应的消息队列完成种子的发布、传输;
(4) 服务B通过消息队列获取服务A发布的种子消息并将种子信息传输给cTrans服务;
(5) cTrans服务解析种子信息,创建链接与第三方存储模块建立通信。
(6) cTrans服务从第三方存储模块获取影像实体并传输给服务B,服务B获取该影像实体,进行其他业务流程。
消息管理模块由一系列高性能消息队列组成,主要解决应用耦合、异步消息通信、流量削峰等问题,如图5所示。
图5 消息管理模块框架图
面向不同消费场景,消息管理模块整合多种消息中间件技术,采用高可用、持久化的部署形态为业务之间的消息驱动提供基础支持,消息内容来源于各个业务模块,可包括订单状态变更、作业状态变更、计划下达、异常报警等。各个业务模块将消息发送到消息管理的指定通道上,调用相应中间件完成消息传输。
信息资源共享平台的目的之一就是整合各行业、部门、企业的多种多样的信息服务、数据资源,J2EE作为适用于企业级应用的多层分布式应用架构在后台服务设计实现中有着广泛的应用。因此本节选取基于J2EE架构的应用作为实例,利用所提异构资源集成框架完成应用资源整合。
基于J2EE框架的时空数据服务实例,一般包含影像服务、订单服务、地名服务、地图服务、用户管理服务、认证服务等诸多类型的服务。为了实现多种时空数据资源的互操作,需要对相应服务交互接口按照服务集成模块的开发模式进行改造,通过服务集成模块接入到异构资源集成框架,完成服务的注册、发布。图6给出应用整体架构图。
图6 地理信息应用实例架构图
从图6中可以看到,资源集成框架整合了应用实例的各类服务资源、消息和实体资源以及多种数据资源。客户端与服务集成模块相连,资源集成框架屏蔽系统底层组成,管理整个系统。应用实例的消息传输通过消息管理模块获取相应消息队列,完成消息传输。多品类非结构化数据则由数据传输模块通过cTrans传输完成,cTrans传输服务与第三方存储模块相连,可以实现批量传输与断点续传。消息管理模块和数据传输模块,高效安全地解决了不同平台间的消息传送和数据传输。数据同步模块统一管理地理信息应用实例的各类数据库以及文件系统。
应用实例采用C/S架构,客户端采用C#开发完成。客户端通过注册中心动态获取服务代理,可以访问所有集成到资源集成框架中的资源。这里截取登录和地名查询服务客户端结果作为呈现。
客户端登录服务界面如图7所示。
图7 客户端登录服务
客户端地名查询服务界面如图8所示。
图8 客户端地名查询服务
本节对服务资源集成模块以及数据同步、文件传输进行性能测试。服务资源集成模块的测试较为复杂,选取J2EE架构中常用的Java远程方法调用RMI作为参照[12],借助LoadRunner测试工具对RMI以及所提出的服务通信框架(SCF)进行比较测试,使用LoadRunner编辑测试脚本,模拟用户使用客户端[13]。测试使用的软硬件环境如表1所示。
表1 测试平台软硬件环境
这里选取登录和地名查询服务进行性能测试,分别编写测试脚本进行并发用户数、平均响应时间以及资源消耗测试[14-15]。部分用例场景设计如表2所示。
表2 部分功能模块用例场景设计
首先对登录和地名查询服务进行并发用户数测试,结果如表3所示。从表中可以看出,在并发用户数达到40时,RMI架构的服务出现错误,之后随着并发用户数的增加,错误不断增加。SCF架构的服务测试结果如图9、图10所示。
表3 并发用户测试结果
图9 并发测试-登录服务(并发数690)
图10 并发测试-地名查询服务(并发数540)
由图可知,SCF架构的登录服务并发用户数增加到690时CPU利用率峰值为48%,其他资源占用也在正常范围内,测试通过。当并发数提高到700时出现错误。SCF登录服务的并发数在690~700之间,同样可测出地名查询的并发数在540~550。因此,并发性方面SCF要明显优于RMI框架。
绘制RMI与SCF登录服务的平均响应时间图如图11所示。
图11 登录服务平均响应时间图
绘制RMI与SCF架构地名查询服务的平均响应时间图如图12所示。
图12 地名查询服务平均响应时间图
由图11与图12可以看出,SCF在平均响应时间方面要优于RMI框架。响应时间取决于通信框架的延迟和吞吐量,在延迟方面由于RMI传输包略大于SCF而在回环环境下测试延迟稍高,在网络环境中由于网络带宽成为瓶颈而使得两者延迟性能基本持平。吞吐量方面,SCF要明显优于RMI,这是由于RMI send buffer size没有优化,而要用一段时间等待方法。
据目前系统用户数量测算,实际并发用户数在100左右,本文对SCF架构的服务采取逐步加压测试,并发用户数从10逐步递增到100,观察其资源消耗及平均响应时间,测试结果如图13、图14所示。
图13 压力测试-登录服务响应时间及资源利用
图14 压力测试-地名查询服务响应时间及资源利用
从图中可以看出,并发用户数从10递增到100期间,登录服务和地名服务成功通过的事务数分别是34 021和14 855。CPU利用率维持在45%以下,内存及硬盘的占用率也并不高。因此,SCF在资源占用方面不存在瓶颈。
测试期间,登录和地名查询服务的平均响应时间分别是0.488和0.951,最大响应时间分别为1.223和2.417。在互联网上对于用户响应时间,有一个普遍的标准:2/5/10秒原则。也就是说,在2秒之内给客户响应,被用户认为是“非常有吸引力”的用户体验。
综上所述,SCF在并发用户数及平均响应时间方面要优于RMI框架。系统负载100左右时,SCF不存在资源占用方面的瓶颈且用户体验良好。
下面对数据库同步和文件同步性能进行测试,测试硬件环境与通信框架测试硬件环境一样。
(1) 数据库同步。情景一:每条数据约100 B,传输数量与同步时间关系(传输模式在7 000~8 000时,由rpc变为http)如图15所示。
图15 数据库传输量与时间关系
情景二:单条数据的大小与同步时间的关系,如图16所示。
图16 数据大小与时间关系
数据库性能指标取决于目标数据库性能,数据大小、网络环境等多个因素,单机房同步初步性能为100 TPS,延迟100 ms,5 000 TPS,延迟1 s,数据100 B大小,极限 TPS可达1万以上。
(2) 文件同步。文件作为数据库中某条数据记录的附件,在数据表发生变化时随数据一起同步。可以支持多种数据格式的附件同步,图片(gif、jpg、png、bmp)、压缩文件、xls、doc、exe以及文件夹均支持。
情景一:每个文件大小为1 KB,传输数量与同步时间关系,如图17所示。
图17 文件数量与时间关系
情景二:单个文件的大小与同步时间的关系,如图18所示。
图18 文件大小与时间关系
去除压缩解压的时间,同步时间与文件大小成线性关系,传输速度在10 MB/s以上,测试环境为百兆带宽。
对资源集成框架中服务调用以及数据、文件同步进行了性能测试,结果表明:SCF在并发性和响应时间方面要优于RMI框架,而且SCF可以整合多种语言开发的服务,不仅限于Java。在资源占用率方面SCF也有着出色的表现。在数据同步和文件传输方面,可以支持海量的时空数据同步和文件传输,数据条数和文件大小不构成传输瓶颈,而且传输带宽利用率可达90%以上。
本文根据信息资源共享平台的需求,提出了一种面向时空大数据资源集成框架,为实现大规模时空数据资源和服务应用的整合提供了理论依据和技术基础。实验表明各系统应用可以利用此套资源集成框架高效稳定地完成数据交换和服务互操作,实现系统的互联互通。此外,通过性能测试将服务集成模块的通信框架SCF与RMI框架进行比较分析,结果表明基于SCF在应用于实际工程时可支持较高的并发而且响应更为快速。通过对数据资源集成模块的性能测试,资源集成框架可以提供高效安全的数据库及文件同步方式。本文研究成果已投入卫星地面系统等大型工程实践,时空大数据资源集成框架能够满足系统需求且性能良好。