地理信息系统引擎系统及实现方法、装置及存储介质与流程

文档序号:22735072发布日期:2020-10-31 09:12阅读:343来源:国知局
地理信息系统引擎系统及实现方法、装置及存储介质与流程

本申请涉及计算机应用技术,特别涉及智能搜索和云计算领域的地理信息系统引擎系统及实现方法、装置及存储介质。



背景技术:

作为一种常用的智能搜索引擎系统,目前的地理信息系统(gis,geographicinformationsystem)引擎系统通常采用开源的地图服务器(geoserver)对接底层数据源,通过geoserver来发布支持开放地理空间信息联盟(ogc,opengeospatialconsortium)标准的服务。

上述gis引擎系统仅支持单一的数据源,如对象关系型数据库管理系统(postgresql)或本地形状文件(shapefile)等单一的数据源,性能受限,而且只支持关系型查询,检索效率低下等。



技术实现要素:

本申请提供了地理信息系统引擎系统及实现方法、装置及存储介质。

一种地理信息系统gis引擎系统,包括:

支持n种不同数据源的底层数据源及核心引擎层,n为大于一的正整数;所述核心引擎层中包括全文检索引擎以及服务提供层;

所述全文检索引擎,用于作为全文检索的缓存,通过分布式锁机制实现和所述底层数据源的数据一致性,通过微批量更新方式保证数据的时效性;

所述服务提供层,用于基于所述全文检索引擎及所述底层数据源提供各种服务。

一种地理信息系统gis引擎系统实现方法,包括:

构建包括支持n种不同数据源的底层数据源及核心引擎层的gis引擎系统,n为大于一的正整数;

在所述核心引擎层中设置全文检索引擎以及服务提供层;其中,所述全文检索引擎用于作为全文检索的缓存,通过分布式锁机制实现和所述底层数据源的数据一致性,通过微批量更新方式保证数据的时效性;所述服务提供层用于基于所述全文检索引擎及所述底层数据源提供各种服务。

一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上所述的方法。

一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如以上所述的方法。

上述申请中的一个实施例具有如下优点或有益效果:可支持多种不同的数据源,不再局限于单一的数据源,从而提升了gis引擎的性能,具有广泛适用性,而且,可根据全文检索引擎等实现全文检索,从而提升了检索效率和检索精度等。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1为本申请所述gis引擎系统100第一实施例的组成结构示意图;

图2为本申请所述gis引擎系统100第二实施例的组成结构示意图;

图3为本申请所述全文检索引擎201对应的分布式集群部署方式示意图;

图4为本申请所述对多数据源的支持方式示意图;

图5为本申请所述多数据中心的示意图;

图6为本申请所述gis引擎系统100对应的逻辑架构和资源编排示意图;

图7为本申请所述gis引擎系统实现方法实施例的流程图;

图8为根据本申请实施例所述方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

另外,应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

图1为本申请所述gis引擎系统100第一实施例的组成结构示意图。如图1所示,包括:支持n种不同数据源的底层数据源10及核心引擎层20,n为大于一的正整数,核心引擎层20中进一步包括全文检索引擎(es,elasticsearch)201以及服务提供层202。

es201作为全文检索的缓存,可通过分布式锁机制实现和底层数据源的数据一致性,通过微批量更新方式保证数据的时效性。服务提供层202可基于es201及底层数据源10提供各种服务。

图2为本申请所述gis引擎系统100第二实施例的组成结构示意图。如图2所示,gis引擎系统100中还可包括功能服务层30,用于将核心引擎层20提供的服务统一封装为微服务形式。

以下分别对上述各部分进行具体说明。

1)底层数据源10

通过定制化多源数据适配器,底层数据源10可支持多种不同的数据源,如postgresql、面向数据仓库应用的关系型数据库(greenplum)、高斯数据库、本地shapefile文件、本地逗号分隔值(csv,comma-separatedvalues)文件等多种数据源,从而提升了gis引擎的性能,具有广泛适用性。

底层数据源101可采用分布式集群部署方式,从而保证了底层数据的高可用性。

2)核心引擎层20

核心引擎层20中可进一步包括es201以及服务提供层202。

核心引擎层20中融合进了es201,用来作为全文检索的缓存,并可通过分布式锁机制实现和底层数据源10的数据一致性,通过微批量更新方式保证数据的时效性。

es201也可采用分布式集群部署方式,内置负载均衡,从而保证了es201的高可用性。图3为本申请所述es201对应的分布式集群部署方式示意图。如图3所示,本实施例中构建了es,实现高性能键值(kv,key-value)检索,向上提供高级检索服务,并且,可通过优化搜索器(searcher)算法框架,通过使用分词、扩展、纠错、归并、赋权、重排等手段,来提升检索的精度等,图3中所示的gis搜索引擎(searchengine)和基础检索节点可认为共同构成es201。

相比于现有的关系型查询方式,本实施例中所述的检索方式能够显著地提升检索效率和检索精度等。

图4为本申请所述对多数据源的支持方式示意图。如图4所示,本实施例中的gis检索服务,可通过读取gissearchengine来实现对外服务的提供,gissearchengine可实时调用百度地图等来提供路线规划等服务,确保互联网相关数据的实时性,可通过gis编辑服务来实时更新索引,并将索引以微批量更新的方式,通过分布式锁机制同步至底层数据源,分布式锁机制用来确保多数据源的数据一致性,可采用raft分布式一致性算法等来实现。

服务提供层202可基于es201及底层数据源10提供各种服务。所述服务可包括支持ogc标准(ogcsupport)的服务以及rest风格(restful)服务等,rest为表述性状态传递(representationalstatetransfer)的缩写。其中,支持ogc标准的服务可包括网络地图服务(wms,webmapservice)、网络要素服务(wfs,webfeatureservice)、网络地图瓦片服务(wmts,webmaptileservice)等。restful服务可包括空间查询服务、缓冲区分析(bufferanalysis)服务、地图检索(geosearch)服务、路线规划服务等,具体包括哪些服务可根据实际需要而定。

服务提供层202中可包括地图服务器(geoserver)分布式集群,用来提供支持ogc标准的服务,从而确保了服务的高可用性。

核心引擎层20中还可进一步包括缓存层203,用于对符合要求的数据进行缓存,并优先使用缓存的数据。所述符合要求具体为何种要求可根据实际需要而定,如可将热点数据进行缓存,当需要使用的数据位于缓存中时,优先从缓存中获取数据,以提升数据读取效率及服务性能等。

具体地,可通过浏览器缓存(webcache)技术,使用远程字典服务(redis,remotedictionaryserver)集群,来进行数据缓存。

3)功能服务层30

功能服务层30可将核心引擎层20提供的服务统一封装为微服务形式,从而实现功能服务间的解耦,可支持动态扩容缩容,进而实现弹性伸缩。

其中,功能服务层30中可包括gis微服务集群,由gis微服务集群将核心引擎层20提供的服务统一封装为微服务形式,向上提供服务,并通过上层的浏览器或应用(app)实现效果最终呈现。

另外,本实施例所述gis引擎系统100可部署在m个数据中心(机房)上,m为正整数,具体取值可根据实际需要而定。图5为本申请所述多数据中心的示意图。如图5所示,各数据中心分别拥有自身的负载均衡机制,如各数据中心分别拥有自身的4层和7层负载均衡机制,并且,各数据中心之间可通过边界网关协议负载均衡(bgploadbalancer)实现各数据中心之间的路由可达并选择最佳路由,从而实现服务的分布式多机房部署。

本实施例所述gis引擎系统100中的所有相关组件均可采用容器化(docker)部署方式,可使用kubernetes进行服务编排,从而构建和运行敏捷的、可扩展的应用程序,通过prometheus等组件进行服务监控,kubernetes为自动部署、扩展和管理容器化应用程序的开源系统。

本实施例中还可通过制定对应服务的服务等级协议(sla,servicelevelagreement),来保证服务的可用性,通过日志服务和通知服务构建的运维监控系统,可在服务出现问题时,7*24及时以短信或者邮件形式通知到对应的运维人员。所述对应服务可包括gis引擎系统100提供的各种服务。

基于上述介绍,图6为本申请所述gis引擎系统100对应的逻辑架构和资源编排示意图。如图6所示,可通过索引编制来建立如postgresql与es之间的映射,读取索引,实现计算与存储分离,es包括图中所示的基础检索节点(dues)和gissearchengine,其中的dues通过服务编排可实现水平扩容,gissearchengine可与redis交互实现数据的高效缓存,向上提供restful应用程序接口(api,applicationprogramminginterface)等,gis服务作为功能服务层向上提供服务,最终通过浏览器或者app实现效果最终呈现。

另外,可将对数据的更新拆分为在线计算和离线计算两种场景,在线计算以只读为准,以降低响应时间,离线计算以追加为主,以提高吞吐容量。

总之,采用本申请所述gis引擎系统,可支持多种不同的数据源,从而提升了gis引擎的性能,具有广泛适用性,并可对多种数据源进行融合,通过使用分布式锁机制实现数据一致性以及通过微批量更新方式保证数据的时效性等;可根据es等实现全文检索,从而提升了检索效率和检索精度等;es、底层数据源、geoserver等均可采用分布式集群部署方式,并可进行多副本配置,数据安全和吞吐性能两全,从而保证了服务等的高可用性;通过增加缓存层,提升了数据读取效率和服务性能等;可通过功能服务层实现功能服务间的解耦,支持动态扩容缩容,进而实现弹性伸缩以及整体服务的高并发等。

以上是关于系统实施例的介绍,以下通过方法实施例,对本申请所述方案进行进一步说明。

图7为本申请所述gis引擎系统实现方法实施例的流程图。如图7所示,包括以下具体实现方式。

在701中,构建包括支持n种不同数据源的底层数据源及核心引擎层的gis引擎系统,n为大于一的正整数。

在702中,在核心引擎层中设置es以及服务提供层,其中,es用于作为全文检索的缓存,通过分布式锁机制实现和底层数据源的数据一致性,通过微批量更新方式保证数据的时效性,服务提供层用于基于es及底层数据源提供各种服务。

通过定制化多源数据适配器,底层数据源可支持多种不同的数据源,如postgresql、greenplum、高斯数据库、本地shapefile文件、本地文件等多种数据源。底层数据源可采用分布式集群部署方式。

核心引擎层中可进一步包括es以及服务提供层。其中,es用来作为全文检索的缓存,并可通过分布式锁机制实现和底层数据源的数据一致性,通过微批量更新方式保证数据的时效性。es也可采用分布式集群部署方式。

通过es,可实现高性能kv检索,向上提供高级检索服务,并且,可通过优化searcher算法框架,通过使用分词、扩展、纠错、归并、赋权、重排等手段,来提升检索的精度等。

服务提供层可基于es及底层数据源提供各种服务。所述服务可包括支持ogc标准的服务以及restful服务等。其中,支持ogc标准的服务可包括wms、wfs、wmts等。restful服务可包括空间查询服务、缓冲区分析服务、地图检索服务、路线规划服务等,具体包括哪些服务可根据实际需要而定。

服务提供层中可包括geoserver分布式集群,用来提供支持ogc标准的服务。

核心引擎层中还可进一步包括缓存层,用于对符合要求的数据进行缓存,并优先使用缓存的数据。所述符合要求具体为何种要求可根据实际需要而定,如可将热点数据进行缓存,当需要使用的数据位于缓存中时,优先从缓存中获取数据。具体地,可通过webcache技术,使用redis集群,来进行数据缓存。

gis引擎系统中还可包括:功能服务层,用于将核心引擎层提供的服务统一封装为微服务形式。其中,功能服务层中可包括gis微服务集群,由gis微服务集群将核心引擎层提供的服务统一封装为微服务形式。

gis引擎系统可部署在m个数据中心上,m为正整数,各数据中心分别拥有自身的负载均衡机制,且各数据中心之间可通过bgploadbalancer实现各数据中心之间的路由可达并选择最佳路由。

gis引擎系统中的所有相关组件均可采用容器化部署方式,可使用kubernetes进行服务编排,从而构建和运行敏捷的、可扩展的应用程序,通过prometheus等组件进行服务监控。

上述方法的具体实现请参照前述系统实施例中的相关说明,不再赘述。

总之,采用本申请所述gis引擎系统,可支持多种不同的数据源,从而提升了gis引擎的性能,具有广泛适用性,并可对多种数据源进行融合,通过使用分布式锁机制实现数据一致性以及通过微批量更新方式保证数据的时效性等;可根据es等实现全文检索,从而提升了检索效率和检索精度等;es、底层数据源、geoserver等均可采用分布式集群部署方式,并可进行多副本配置,数据安全和吞吐性能两全,从而保证了服务等的高可用性;通过增加缓存层,提升了数据读取效率和服务性能等;可通过功能服务层实现功能服务间的解耦,支持动态扩容缩容,进而实现弹性伸缩以及整体服务的高并发等。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图8所示,是根据本申请实施例所述方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图8所示,该电子设备包括:一个或多个处理器y01、存储器y02,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图8中以一个处理器y01为例。

存储器y02即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的方法。

存储器y02作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的方法对应的程序指令/模块。处理器y01通过运行存储在存储器y02中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。

存储器y02可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器y02可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器y02可选包括相对于处理器y01远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、区块链网络、局域网、移动通信网及其组合。

电子设备还可以包括:输入装置y03和输出装置y04。处理器y01、存储器y02、输入装置y03和输出装置y04可以通过总线或者其他方式连接,图8中以通过总线连接为例。

输入装置y03可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置y04可以包括显示设备、辅助照明装置和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器、发光二极管显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用集成电路、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,阴极射线管或者液晶显示器监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网、广域网、区块链网络和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1