基于消息调度机制的地质服务体系构建及应用实践

2019-03-29 11:17张学利马娜杨燕宋敦江汪健平刘国赵永明
自然资源遥感 2019年1期
关键词:队列服务体系消息

张学利, 马娜, 杨燕, 宋敦江, 汪健平, 刘国, 赵永明

(1.有色金属华东地质勘查局,南京 210007; 2.中国地质调查局发展研究中心,北京 100037; 3.中国科学院科技战略咨询研究院,北京 100037; 4.山东省海洋资源与环境研究院,烟台 264006; 5.中国地质图书馆,北京 100083)

0 引言

在地质信息化web服务共享中,基于OGC的地质数据共享取得了长足的进步,形成了比较完善的系统,满足了地质数据共享服务[5-8],但是基于OGC WPS服务难以满足地质算法的共享。这是由地质数据处理服务的下述特点所决定的: ①地质数据类型多样,包括地质、物化探、油气、钻孔、测井等数据,数据处理体量比较大; ②不同的地质数据种类对应的地质处理算法复杂多样; ③数据处理耗时严重,执行处理时间与等待时间较长。在提供地质处理web服务的时候,遵循WPS服务的时候重新开发难度相当大、开发周期也比较长,这就带来了地质算法重新开发周期长与互联网要求地质服务快速共享之间的矛盾。因此如何能够重用地质算法库或应用软件,快速构建满足大数据支撑的web共享服务系统,是一个迫切需要解决的问题[9-12]。

针对地质数据处理服务共享中遇到的实际情况,结合消息调度概念及应用模式,本文提出了基于消息调度机制的地质数据处理服务共享机制。消息调度,又称消息队列调度,它属于系统中间件部分,是分布式系统中重要的组件。其工作原理是通过消息来协调系统中各个组件或模块之间的应用。主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。在国土资源服务行业,采用消息调度机制并不常见。该机制可将已开发的地质算法库和地质应用软件扩展消息接口支持,不改变已有算法或应用系统的架构或代码,在满足互联网上的地质数据处理服务请求的同时,最大程度地复用这些地质算法库或地质数据处理应用软件,由此提高开发效率。同时,采用消息调度机制,还可以根据互联网请求数据的并发数或上传数据的大小,来动态选择支撑算法处理服务器的处理能力,保证不会因为处理算法数据过大而造成服务器崩溃。

本文设计了基于发布/订阅消息服务模式的地质服务体系架构,介绍了地质消息体的结构、地质消息模型、地质服务分类、地质算法服务封装等关键技术,并以流程化地质在线处理服务为例,展示了消息调度机制在地质服务体系中的应用。实践证明,消息调度机制可以满足地质服务的快速开发,能更好地满足互联网、大数据的应用需求。

1 地质服务体系设计

1.1 架构设计

消息队列一般包括单向调用模式、回调模式、轮询模式和发布/订阅模式4种模式(图1)[13],每个模式包含消息队列、发送者和接收者3个角色。

新型地质服务体系在架构设计时,考虑了以下几个方面的情况: ①对已有算法库或应用软件进行复用,这是系统架构设计的第一原则,否则系统就需要进行大规模的算法重新编码,增大研发周期和造成已有研发系统的浪费; ②算法库在重新封装后,不但能够保证本系统的使用,还要保证第三方系统能够调用这些算法库; ③算法服务和网站之间保持松耦合关系,网站变更不影响算法库服务的继续服务。综合考虑以上架构设计原则,基于发布/订阅模式的消息调度模式,构建了地质服务体系。其架构主要由4个主体部分构成(图2)。

图1 消息队列模式图Fig.1 Message queue invoke pattern

图2 地质服务体系架构Fig.2 Architecture of geology service

1)系统平台。主要是网站的设计与开发,提供地质算法服务界面,获取地质处理需要的参数项。触发执行操作,发送处理消息,并将地质算法库处理后的成果数据进行可视化。

2)消息队列传递。主要是包含地质处理相关参数和数据的消息传递,参数包括消息队列的名称、地质算法处理需要的参数项、数据的存储地址等。

3)消息调度处理服务器。主要承载消息体的周转,消息体的异常处理和消息的负载均衡,会根据消息队列执行的频度做分布式调度。

4)地质算法库。是地质处理和地质应用软件处理模块。接收消息调度服务器传递来的消息,进行地质运算,生成成果数据,同时将地质结果数据以OGC WMS或切片地图web服务的方式发布[5-8],对外提供数据访问接口,供系统平台调用。

①Puschmann T.,Alt R.,“Sharing Economy”,Business& Information Systems Engineering,2016,58(1).

1.2 地质消息体结构及处理服务模式设计

地质消息体结构是整个消息调度服务体系的基础,消息体的设计关系到系统架构的各个环节。消息结构粒度的设计,是消息体设计成败的关键。若消息体粒度太粗,后台算法库变成一个统一整体模块,难以区分消息请求; 而消息体粒度太细,就会出现一个算法对应一个消息队列和一个处理节点的情况,形成庞大的算法处理节点。综合考虑系统中服务的处理类型和实践需求,本文设计了一个合适的消息体结构,其包含的参数如表1所示。

表1 地质消息体参数Tab.1 Parameter of geological message body

首先,将地质算法库注册到消息调度服务体系中,包括算法库的名称、算法队列的名称,算法的发布者、算法处理描述等信息,形成消息队列服务库,方便服务的查询与浏览; 其次,在系统平台,用户需要填写地质处理需要的参数,包括选择数据项、算法参数项、请求方式等参数,执行处理服务请求,生成地质处理消息队列和消息体,发布消息队列; 再次,地质算法库从消息队列服务库中订阅符合自己处理要求的消息队列,当监听到来自于消息调度服务器发送的消息处理后,接收消息体,然后将消息内容解析,传递给地质处理内部模块,生成处理结果,并调用地质空间数据服务模块,生成符合OGC规范的WMS和网络要素服务(web feature service,WFS)等数据服务接口,并把接口信息推送给系统平台; 最后,系统平台接收到算法库模块推送的数据显示接口,由WMS和WFS接口进行解析与展示,将处理结果通过浏览器展示给用户。

1.3 地质处理算法分类设计

在消息调度的地质服务体系下,对已有的地质处理算法库和应用软件功能进行了分类梳理,按照基础算法处理、空间数据处理和业务处理方式分为统计分析、地质专题图、地质处理和空间分析4大类,每个大类分为若干个模块。具体分类如图3。

图3 地质处理算法分类设计图Fig.3 Classification design of geological processing algorithm

2 系统的实现

基于消息调度机制地质服务体系平台的研发,主要包括网站的开发、消息调度服务器构建、地质算法服务接口的封装和WebGIS体系的构建。其中消息调度服务器构建和地质算法库接口的封装是系统的开发核心。

2.1 软件环境的搭建

网站采用Play框架开发,使用Java开发语言,主要用于前台请求页面的设计和处理服务应用程序编程接口的调用; 地质算法服务的封装是原有系统基础上消息接口的封装,一般是将C# .Net代码封装成控制台程序; web服务器、负载均衡服务器、消息调度服务器等统一部署于Docker环境下[13-15],平台开发工具如表2所示。

表2 平台开发工具列表Tab.2 Platform development tools

2.2 地质算法服务的封装

对已有地质算法库或地质处理应用服务,按照消息调度机制的服务体系进行封装,主要分为3个步骤: 首先,将已有地质算法库或地质处理应用进行拆分,将界面操作逻辑与核心算法库进行剥离,明确核心算法库的输入数据类型、输出数据类型、算法包依赖环境、算法解决的地质问题等,形成标准算法库,一般是动态链接插件库; 然后,梳理标准算法库,根据算法功能进行分类,同时根据分类设计出对应的消息体名称和队列名称,形成支持消息调度机制的算法功能库; 最后,对照网站提供的功能和地质消息体结构,开发控制台程序,调用算法功能库,对网站传递过来的请求和地质消息体结构执行相关处理计算,生成处理结果,并自动发布成地质空间数据处理服务。

算法库封装完毕之后,系统开发者不需要关心后台算法的开发,只需要提供算法需要的数据,在使用已有算法的同时,大大地提高了地质处理服务系统的研发效率。

2.3 地质数据共享服务的发布

地质数据共享服务的发布,主要是应用ArcGIS Server作为WebGIS服务器提供地质处理结果数据的可视化服务。首先,当算法库执行完地质处理后,会生成地质空间成果数据; 然后,ArcGIS Server服务器监听到数据变更,会自动执行空间数据发布服务,将地质数据发布成符合OGC规范的WMS服务,同时将WMS地址推送到网站前台; 而前台拿到WMS地址解析WMS服务地址,最后将地质运算结果显示到浏览器前台,给用户展示地质算法结果。

2.4 地质消息处理流程

地质消息处理流程(图4),首先是浏览器提供地质在线处理算法页面,用户在页面上选择设计地质算法方法、上传相应数据、设置算法需要的相关参数,然后点击处理请求; 在用户通过浏览器界面点击处理请求的同时,触发消息队列处理服务,对应算法处理的消息队列,根据用户注册的参数和上传的数据生成地质处理消息体,消息调度服务器根据消息队列名称和请求数据大小,动态分配地质处理算法节点; 地质处理算法节点在监听到消息处理请求时,解析消息数据成算法需要的数据格式,并将数据传递给算法处理插件,执行地质运算,生成运算结果数据,同时呼叫WebGIS在线服务发布程序,将地质运算生成的结果数据发布成OGC WMS服务,通过消息推送服务器,并将WMS地址推送给浏览器前台,浏览器前台解析WMS地址,将地质处理结果展示到浏览器界面中。

图4 地质消息处理流程Fig.4 Flow of geological message in system

3 应用实例分析

在应用实践中,以基于消息调度机制的地质服务体系为支撑,面向互联网应用,构建了一个基于浏览器的流程化地质在线处理原型系统(图5),按照地质算法分类,将各个算法列表展示在右侧功能菜单,用户通过拖拽的形式,将功能拖拽到中间流程设计面板,并按照触角类型,将同类型的输入与输出连接起来,形成面向地质处理流程。图5是以土壤地球化学处理为示例,将元素采集点数据以Excel上传,通过插值算法、等值线、等值面算法形成空间数据成果,得到单元素地球化学异常图或多元素异常图服务,形成元素异常图服务,并在流程执行结果中展示。其中,在流程中对数据进行的预处理,如回归分析、统计分析等同步以图表或文字的形式展示在结果应用页面中(图6)。

图5流程化在线处理系统设计界面

Fig.5Designinterfaceofon-lineprocessingsystem

图6 流程在线处理结果界面Fig.6 Result interface of on-line processing system

4 结论

1)依托于消息调度机制这一新技术,提出了一种新型的地质数据处理服务共享架构,对该架构下地质消息体的结构、服务模式进行了设计,并对地质处理算法的流程进行了分类设计,并初步实现了该模式的应用系统。

2)与当今主流基于OGC标准服务共享处理算法相比,本文着重从地质处理算法复用性来搭建应用服务体系,优点是已有的系统或代码几乎不需要作任何更改就能集成到平台中,同时对处理算法生成的数据,继续遵循OGC标准提供了可视化服务,适应了互联网系统快速开发的特点,满足了互联网、大数据的应用需求。

3)下一步研究,系统将注重解决应用服务的云上管理,将地质处理算法库等共享服务移植到云环境中,提供更大范围的应用实践。

猜你喜欢
队列服务体系消息
智慧出行,智绘未来——新一代出行服务体系构建与实践探讨
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
一张图看5G消息
“三效合一”构建现代农业服务体系
建好公共法律服务体系“最后一公里”
在队列里
初具规模的健康管理服务体系
消息