基于分布式架构的海量空间数据快速浏览与发布系统设计
2022-12-30李东,申辽
李 东,申 辽
1云南省自然资源厅国土资源信息中心
2云南省测绘资料档案馆〈云南省基础地理信息中心〉
随着自然资源数据获取方式更加快捷,云南省现有自然资源信息化建设积累了大量的空间地理信息数据成果,因数据量大导致地图服务浏览、查询效率不高,地图瓦片的构建处理时间冗长、更新不及时,影响了自然资源大数据建设成果的应用与推广。同时,现有国土资源、基础测绘、地质环境等专业的信息化应用建设中也发布了大量的地图服务,由于技术要求不一、管理分散、更新困难等问题,迫切需要建设国土空间海量数据快速浏览查询、服务发布及更新系统,满足自然资源空间大数据的管理、快速浏览查询和更新需求。
1 系统技术设计
建设自然资源数据快速浏览与服务发布系统,主要是为了解决好两个方面的问题。
一是研发高性能分布式地图瓦片引擎,解决地图服务的快速切图、快速发布、快速浏览的问题。实现在大数据量背景下的空间地图服务高速化。
二是研发国土资源空间数据统一发布系统,解决现有地图服务管理分散、数据不统一、资源利用效率低等问题。实现跨平台的地图服务统一管理、统一发布和统一更新。
系统功能的建设应包含高性能地图瓦片引擎、空间数据高速更新、统一地图服务发布与管理、地图快速浏览查询、系统监控等五大主要功能模块。
1.1 系统技术架构
自然资源海量数据快速浏览与服务发布系统需要在架构层面,解决自然资源数据体量巨大、处理速度快、数据类型繁多、价值密度低等特性带来的挑战,因此在技术选型上采用了当前主流的Hadoop架构,并结合空间数据存储、分析的特点,选择了多种当前主流的大数据框架[1]。在大数据存储层,统一采用分布式文件系统,架构Swift、HBase,实现对空间数据的存储;在大数据处理层,采用MapReduce、Hive、Spark等大数据处理框架,同时采用GIS Tools for Hadoop实现对空间大数据的处理[2]。空间大数据管理的总体技术架构如图1所示:
图1 系统技术架构
(1)数据采集层
国土资源大数据快速浏览与服务发布系统的数据来源于国土资源大数据平台,数据格式以结构化空间数据为主,此外还会包括大量的非结构化数据,例如:图片、视频、音频、文档等。
(2)大数据存储层
为了满足不同数据格式的存储要求,在数据存储层搭建异构的数据库存储技术,对于结构化数据,采用传统的关系型数据库(RDBMS)Oracle;对于非结构化数据,采用分布式存储架构,Ceph、HDFS、HBase、Swift。在数据存储层,对关系型数据库和分布式存储实现统一管理,向上层提供统一的访问接口[3]。
(3)大数据处理层
结合空间数据处理的特点,在大数据处理层建 立GIS Tools for Hadoop框 架,依 托 底 层 的MapReduce、Hive,对空间数据进行分布式处理和运算。同时,搭建通用的大数据处理框架,如Spark等,满足常规大数据的处理需求,处理结果经过空间建模、可视化,最终面向业务应用。
(4)服务层
服务层为用户提供快速浏览的地图服务能力,包括矢量地图快速浏览服务、影像地图快速浏览服务。
(5)应用层
国土资源大数据快速浏览与服务发布系统支持Web端的访问方式,用户可以在Web端,访问系统所发布的各类专题地图服务。包括土地专题图、矿政专题图、地质环境专题图、不动产登记专题图等。
1.2 系统功能设计
(1)高性能地图瓦片引擎
提供矢量地图的分布式瓦片图像缓存生成、影像地图的分布式瓦片图像缓存生成、分布式瓦片缓存管理、瓦片缓存局部更换等功能。为了与ArcGIS平台兼容,高性能瓦片引擎要在输入、输出两大环节与ArcGIS平台保持兼容。高性能地图瓦片引擎不仅要能够识别ArcGIS配图文件,还要能够利用存储在国土资源空间数据库中的空间数据来生成地图瓦片。由于既有的业务应用系统所引用的地图服务,都是采用ArcGIS平台发布的,所以高性能地图瓦片引擎所生成的地图瓦片也要能够发布到ArcGIS平台上,这样就可以最大限度地保证在提升地图服务效能的同时,保持相关业务的持续性。
采用分布式计算框架不仅把计算的压力分散到多台设备上,尤其是把IO的压力也分散开,有效利用各台设备上的高速缓存,极大地提高瓦片生成效率。
在分布式瓦片引擎节点上生成的地图瓦片,也是散布在各个节点上。通过分布式文件系统将这些分散的地图瓦片组织成为一个统一的整体。为了提高分布式瓦片存储的存取速度,必须建立一套统一的分布式文件索引。
(2)数据主动更新
针对既有空间数据库,能够感知空间数据的更新。按照数据更新的空间范围,快速重构瓦片图像缓存,并更新到相关地图服务中。
数据更新模块的功能满足两项要求:
一是能够主动感知既有空间数据库中的指定空间数据的更新。
二是按照空间数据更新范围,自动生成局部瓦片并更新到相关地图服务中,根据所感知的空间数据的更新范围,自动计算需要重新生成的瓦片范围,通过瓦片引擎生成局部的地图瓦片,然后再通过地图统一发布服务,把局部的地图瓦片更新到相关的地图服务中。
(3)统一地图服务发布与管理
统一地图服务发布与管理模块包含国土空间资源目录维护、矢量地图服务快速发布、影像地图服务快速发布、导入既有地图服务、地图服务维护管理等功能。
统一地图服务发布与管理模块的功能需要满足两项要求:
一是快速发布新的地图服务,包括矢量地图服务和影像地图服务。在高性能地图服务平台上,发布新的地图服务。根据要求通过高性能地图瓦片引擎生成地图瓦片,提供可以快速浏览的地图服务。
二是跨平台维护与管理既有已发布的地图服务。通过ArcGIS的地图服务管理接口,跨平台接入已发布的地图服务,并实现统一的地图服务管理功能。
(4)地图快速浏览查询。地图快速浏览查询模块包含基础地图快速浏览、专题图快速浏览、图层控制、地图工具(选取、绘制、编辑、地图量算)、空间数据快速查询、空间数据分析等功能。本模块实现的地图快速浏览与快速查询是基于所发布的地图服务提供的高性能。
(5)系统监控
系统监控模块包含集群管理、服务器节点监控、服务发布任务监控、操作日志、系统日志,以及基础的系统管理功能。
由于高性能地图瓦片引擎会用到分布式处理技术,导致系统部署在较为复杂的分布式集群环境下,良好高效的系统监控模块会使得整个集群环境易于维护。
2 采用的关键技术
2.1 基于dubbo的分布式处理
随着云计算的发展,系统应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构演进有条不紊。在本系统里我们将业务应用抽取为一个个独立的服务,形成稳定的服务中心,统一对外提供服务调用。采用分布式部署,具备横向扩展能力,满足快速响应需求,提供高容错处理机制。
主要核心部件:
Remoting:网络通信框架,实现了sync-overasync和request-response消息机制;
RPC:远程过程调用,支持负载均衡、容灾和集群功能;
Registry:服务目录框架用于服务的注册和服务事件发布和订阅。
2.2 基于nginx+lua+redis的高性能访问分发
借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。同时引入ngx_lua,该模块通过标准Lua5.1解释器或LuaJIT 2.0/2.1,把Lua嵌入到Nginx里面,并利用Nginx子请求,把强大的Lua线程混合到Nginx的事件模型中。Lua代码被执行在网络上是100%非阻塞的。在本系统中,上游请求服务为Redis,通过读取Redis里存储的瓦片缓存票据缓存索引,最终实现地图访问的高性能分发。
Nginx采用的是master-worker模型多进程模型一个master进程管理多个worker进程,基本的事件处理都是放在woker中,由master处理外部信号、配置文件的读取及worker的初始化,worker进程采用单线程、非阻塞的事件模型(Event Loop,事件循环)来实现端口的监听及客户端请求的处理和响应,同时worker还要处理来自master的信号。由于worker使用单线程处理各种事件,所以一定要保证主循环是非阻塞的,否则会大大降低worker的响应能力。而Lua代码执行是非阻塞,非常符合Nginx进程模型。
2.3 分布式空间分析引擎
通常GIS软件以数据获取、存储、管理功能为主,并添加了各种时间维度和空间维度的专题图展示功能,具有空间统计、地理分区、路径分析、选址优化等空间分析方法。但现有的数据管理和分析算法也难以扩展到大规模的分布式并行计算系统之上,无法满足对非结构化的未知数据的探索性分析的需要,无法满足大规模数据快速处理和复杂时空关系的分析需要。分布式空间分析引擎,引入空间数据库一体化管理空间、属性数据,以及较小冗余度、高效空间索引等优势,结合分布式计算引擎对大型运算的优化支持,实现分布式技术的空间分析方法。分布式空间分析引擎架构由2部分组成:
一是分布式计算层,以计算性能良好的Spark作为计算引擎,引入了与其他分布式计算不同的弹性分布式数据集(Resilient Distributed Datasets, RDD)进行内存运算,与MapReduce相比节省了大量的磁盘输入、输出操作,提高了运算速度;并以Shark(Hive on Spark)为数据仓库,将查询语句转换为Spark上的RDD操作。
二是数据管理层,采用空间数据库与HDFS混合的方式进行数据存储。
3 结论
通过高速分布式计算技术与传统的空间地理信息服务发布相结合,建设自然资源数据快速浏览与服务发布系统,实现高速生成地图瓦片、高速发布地图服务、高速浏览地图服务,从技术上为云南省国土资源大数据的推广应用提供保障。同时通过分布式服务治理技术,对国土资源时空云平台、基础地理信息时空云平台、地质环境信息时空云平台上所发布的地图服务,实现跨平台的统一管理、统一发布、统一更新,逐步改善既有业务应用系统的地图服务环境,从管理上解决国土资源信息化高速发展、数据成果快速积累所带来的一些问题。