一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于微服务架构的地理信息服务系统的构建方法与流程

2022-02-20 13:18:49 来源:中国专利 TAG:


1.本发明属于电子信息技术技术领域,具体涉及一种基于微服务架构的地理信息服务系统的构建方法。


背景技术:

2.随着地理信息系统(简称gis)的快速发展,实际项目中需要在地理信息系统场景中展示的内容越来越多,管理的数据种类越来越多,场景的显示精度越来越高,处理的数据量越来越大,处理的并发量也越来越多。传统的做法就是在已有的系统中集成这些新展示内容,优化数据处理逻辑,部署集群提高并发量处理。但是随着市场对地理信息服务系统与日俱增的功能要求,一直在单体的地理信息系统上集成新的功能和处理大量的数据,将导致系统的体量越来越大,内部逻辑越来越复杂。而为处理多并发问题所扩展的集群服务,因为缺少服务的统一管理与监控,导致集群中的某一个服务宕机很难快速知道,不能快速排查问题并解决问题。一直在原有的系统中做加法,严重时甚至会导致系统最终作废。
3.单体应用的代码越来越多,依赖的资源越来越多时,应用编译打包、部署测试一次也非常耗时。系统高可用性差,资源无法隔离,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。当单体系统的数据量与访问量越来越大的时候,地图数据服务的响应速度也会随之下降,访问量达到一定阈值后会导致服务卡顿甚至卡死。单体系统固然可以进行水平扩展,部署在多台机器上组成集群,但是这种扩展并非灵活的扩展,对于某一个功能的请求是高并发的,往往要对整个系统都进行集群,不能做到按需扩展,并且对这些集群没有一个统一的管理与监控。
4.为解决地理数据单体服务面对功能越来越多时的臃肿,复杂和数据量大,访问量多,地图服务的响应效率下降,访问量达到一定阈值后会导致服务卡顿甚至卡死的问题,以及单体服务水平扩展不灵活的问题,因此亟需一种新的基于微服务的构建方法。


技术实现要素:

5.发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于微服务架构的地理信息服务系统的构建方法,微服务架构能够快速响应地理信息系统中日益增加的需求,它基于领域模型对服务进行拆分,一个微服务只会关注一个特定的业务功能,所以业务清晰、代码较少开发维护简单;局部修复容易;拥有服务治理,易于服务的管理与监控;技术栈不受限制,每个微服务可以选择不同技术路线,数据管理不冗余,每个微服务都有对应的数据库。同时基于某个业务数据的微服务又可以基于空间网格剖分的理念进行再划分,提高了地理信息服务系统的大数据处理能力和高并发请求响应能力,使其便于扩展,易于部署到云服务器上。
6.为实现上述目的,本发明公开了基于微服务架构的地理信息服务系统的构建方法,包括构建地理信息服务系统拆分后的地图服务,影像数据服务,模型服务,气象水文数
据服务和提供服务治理的微服务框架模块的服务中心,配置中心,网关服务,服务监控与统计服务。
7.为了提高地理信息服务系统的大数据处理能力和易于扩展的能力,将地理信息服务系统按照数据源异构的特性,划分为地图服务,影像数据服务,模型服务,气象水文数据服务。后期如果系统中需要处理其他业务数据(如卫星轨道),可以再开发一个微服务模块,注册到服务中心即可。所有的微服务统一注册到服务中心,再由网关根据用户的请求在服务中心获取对应的服务名,每一个服务可以在服务中心中注册多个,如地图服务,由于地图场景是地理信息服务系统的基础,访问量会很大,可以在多台服务器中部署地图服务,然后统一注册到服务中心,网关会根据空间网格剖分法及负载均衡策略将不同用户的请求分配给服务中心中的不同地图服务,当有某个地图服务因为其他原因发生故障时,服务监控会在第一时间检测到,并上报到系统管理员。实现地理信息信息系统的高并发响应速度和服务的统一管理。
8.本发明包括以下步骤:
9.步骤1,构建服务中心;
10.创建一个服务中心应用程序,在配置文件中添加关于eureka(微服务框架的一个组件,提供服务注册和服务发现的能力)的依赖以创建服务中心微服务;在服务中心工程的启动类代码中添加注解@enableeurekaserver、@enablediscoveryclient,直接运行该工程的启动类的main(程序启动入口)方法,即可启动服务中心服务端;
11.在配置中心服务、网关服务、服务监控与统计服务、地图服务、影像数据服务、模型服务、气象水纹数据服务的置文件中添加服务注册依赖,然后在application(程序启动主类)中添加注解@enablediscoveryclient,并在配置文件中添加关于服务注册的配置信息,最后启动服务,即可注册到服务中心。
12.服务中心用于注册和发现所有的微服务,通过心跳机制,每隔一定的时间服务中心就会请求注册进服务中心中的所有微服务,检测注册的微服务是否正常。
13.步骤2,构建配置中心;
14.创建一个配置中心应用程序,在配置文件中,添加关于配置中心模块的依赖以创建配置中心微服务。
15.在配置中心微服务的入口类加上注解@enableconfigserver,开启配置服务器的功能;在程序的配置文件中配置一个本地文件夹路径用于存储配置文件的仓库;
16.在配置中心微服务中添加配置中心依赖,在配置中心微服务的配置文件bootstrap.properties中添加关于配置中心相关信息,配置成功后即能够在目标程序中读取配置中心文件内容。
17.配置中心主要提供各个微服务的动态配置,做到不重启服务而更新服务中的配置信息,如数据路径的更新。
18.步骤3,构建网关服务;
19.创建一个网关应用程序,在配置文件中,添加关于网关的依赖以创建网关服务;
20.在网关服务的启动类中添加注解@enablezuulproxy,开启网关路由的功能;
21.在配置文件中添加网关相关内容,网关将会根据请求路径和负载均衡策略及空间p剖分规则将请求路由到具体的微服务中去。
22.网关拦截所有的用户请求,根据请求路径和负载均衡策略,在服务中心中获取对应的服务进行处理,并将处理结果返回。通过网关和服务中心实现了服务的分布式集群部署和负载均衡,提高了大数据的处理能力和高并发的响应能力。
23.步骤4,构建服务监控与统计;
24.步骤5,构建地图服务,并基于空间网格剖分法,将地图服务划分为两个以上的服务(将全球根据经纬度四等分,划分为四个地图服务,分别负责西经180度北纬90度到0经度0纬度、西经180度南纬90度到0经度0纬度、东经180度北纬90度到0经度0纬度、东经180度南纬90度到0经度0纬度),各个区域的地图服务分别部署多个,实现地图服务的分布式集群部署。
25.该地图服务是基于瓦片的地图服务,常见的地图瓦片数据包括jpeg,png等图片格式的散列瓦片文件和arcgis server工具生产的bundle格式的压缩瓦片文件,不论是哪种地图瓦片数据都是作为wmts(web map tile service)服务的直接数据来源,通过地图瓦片级别、行号、列号获取一一对应的数据并通过wmts服务接口提供瓦片数据服务。基于瓦片数据的地图服务,是在利用地图瓦片作为wmts服务的直接数据来源的基础上,通过对获取的瓦片数据进行逻辑操作和图形重组整合后,对外提供符合wmts、wms(web map service)等服务接口规范的瓦片数据服务。现有技术中,每次地图服务都需要进行本地地图瓦片文件的查找,重组,效率低,速度慢。本发明通过微服务的架构,提供瓦片数据高速缓存,负载均衡,和瓦片的分布式集群访问和分布式集群计算,当用户访问某个区域地图服务时,网关负载均衡到对应区域的一个地图服务,或多个地图服务,地图服务首先去缓存数据库中查找,如果没有,再通过网格索引快速查找、定位和调度瓦片,对交界处瓦片进行在线融合,并将查找到的瓦片地图进行聚合,并将本次请求的地图缓存到内存缓存数据库中。提高下次相同地图服务的访问速度。达到用户在客户端访问一个聚合服务,即可获得来自多个地区的地图服务叠加而成的地图瓦片,减轻了用户大量访问瓦片产生的网络和客户端运行的压力,提高了地图服务聚合的访问效率。
26.步骤6,构建影像数据服务,并基于空间网格剖分法,将影像数据服务划分为两个以上的服务,实现影像数据服务的分布式集群部署和并行计算;
27.基于分布式计算的影像数据服务,根据定义的瓦片切片规则,进行影像数据,高程数据的并行切片和存储。常见的影像切片规则有谷歌切片规则,以web墨卡托投影为基础的,在第一层级将地图一分为四的规则。另一类是以天地图切片规则为代表的,以wgs84坐标系为基础的,在第一层级将地图一分为二的规则。基于分布式计算的影像数据服务,根据切片规则将切片任务进行分布式计算,并统一存储到数据库中。现有影像数据处理技术,往往都是多线程阻塞式处理,启动多个线程根据切片规则一个层级一个层级的处理数据,下一级的数据处理往往依赖上一级的数据处理结果。基于微服务架构的影像数据服务,在处理数据时,网关根据影像范围,将影像数据负载均衡到一个或多个影像数据服务中,影像服务集群同时并行处理影像的0级到10级数据,互相不依赖,且数据处理分布在不同的服务器上,达到数据的快速处理与存储。
28.步骤7,构建模型服务;
29.步骤8,构建气象水文数据服务,并基于空间网格剖分法,将气象水文数据服务划分为两个以上服务,实现气象水文数据服务的分布式集群部署;
30.步骤9,使用docker构建微服务。
31.步骤1中,所述服务中心提供一个服务注册与服务发现的功能,以实现中间层服务器的负载平衡和故障转移,服务的提供者(这里指注册到服务中心的服务)启动后会将服务信息发送给服务中心,服务中心接收到后会写入注册表中,然后同步(异步方式)给集群中的所有服务中心保证数据一致性;
32.服务的提供者(这里指注册到服务中心的服务)通过向服务中心发送心跳(默认每30秒)来续约服务;如果客户端持续不能续约,服务中心将在大约90秒内从服务器的注册表中将其剔除;注册信息和续订被复制到集群中的服务中心的所有节点;以此来确保当前服务还处于运行状态,可以被调用。
33.当一个服务需要调用地图服务或者模型服务时,在客户端(这里指注册到服务中心的服务)启动后会拉取服务中心的地图服务或者模型服务信息,需要调用时,在客户端的本地缓存中获取信息,调用服务。
34.在分布式开发架构中,任何单点的服务都不能保证不会中断,因此需要服务注册发现机制,某个节点中断后,服务消费者能及时感知到保证服务高可用。
35.步骤2中,所述配置中心提供一个全局配置和配置热更新的功能,实现系统的配置集中和热更新(在不重启其他服务的情况下,更新服务中的配置);通过配置中心更新配置的流程包括:
36.当地图服务中配置的地图数据路径发生改变时,用户只需要更改下配置中心中的本地配置文件,在配置文件中修改地图服务的数据路径为最新的数据路径,并调用刷新接口,这时整个系统中的所有地图服务的数据路径就会更新成功。
37.步骤3中,所述网关服务提供一个请求路由和负载均衡的功能,以实现高并发时的服务响应速度,通过网关服务请求服务流程包括:
38.基于空间网格剖分的理念将全球沿经纬线方向进行四等分,得到四个区域相同的地图服务,对于第一个区域,即以第一个区域为例,用户请求地图服务,网关会到服务中心去找地图服务的节点信息,如果找到地图服务的节点信息,负载均衡器会判断负责该区域的地图服务是否可用,然后择优选择能处理当前请求的地图服务,如果负责该区域的一个地图服务正在处理请求,负载均衡器会接着找其他负责该区域的地图服务,直到找到有处理能力的该区域的地图服务,网关会将请求发送给找到的地图服务,地图服务请求成功后会将成功信息反馈给用户,从而实现服务的负载均衡。
39.步骤4包括:创建一个服务监控与统计应用程序,在配置文件中,添加关于服务监控的依赖以创建服务监控微服务。
40.在服务监控工程启动类中添加注解@enableadminserver,开启服务监控的功能。
41.其他微服务引入服务监控的依赖,对外暴露监听接口给服务监控与统计服务,服务监控与统计服务监听各个微服务对外暴露的接口,监控各个微服务的工作状态(包括运行内存情况,数据库连接情况等),实现了微服务的统一管理。
42.步骤5包括:创建地图服务应用程序,在配置文件中,添加地图服务所需的第三方依赖,同时基于空间网格剖分的理念,将全球沿经纬线方向进行四等分二维剖分,得到四个区域相同的地图服务,以得到的地图服务作为空间剖分基础,根据用户访问量,数据精细度进行四叉树细分(基于空间网格剖分的理念将全球沿经纬线方向进行四等分,得到四个区
域相同的地图服务,以第一个区域为例进行说明,如果第一个区域用户访问量大(通常默认访问量超过5000会判断为访问量大,用户也可以自定义访问量上限)、数据精细度高(通常以该区域的分辨率来判断数据的精细度),又会将该区域沿经纬线方向再次进行四等分,以此类推),实现地图服务。
43.该地图服务是基于瓦片的地图服务,常见的地图瓦片数据包括jpeg,png等图片格式的散列瓦片文件和arcgis server工具生产的bundle格式的压缩瓦片文件,不论是哪种地图瓦片数据都是作为wmts(web map tile service)服务的直接数据来源,通过地图瓦片级别、行号、列号获取一一对应的数据并通过wmts服务接口提供瓦片数据服务。基于瓦片数据的地图服务,是在利用地图瓦片作为wmts服务的直接数据来源的基础上,通过对获取的瓦片数据进行逻辑操作和图形重组整合后,对外提供符合wmts、wms(web map service)等服务接口规范的瓦片数据服务。现有技术中,每次地图服务都需要进行本地地图瓦片文件的查找,重组,效率低,速度慢。本发明通过微服务的架构,提供瓦片数据高速缓存,负载均衡,和瓦片的分布式集群访问和分布式集群计算,当用户访问某个区域地图服务时,网关负载均衡到对应区域的一个地图服务,或多个地图服务,地图服务首先去缓存数据库中查找,如果没有,再通过网格索引快速查找、定位和调度瓦片,对交界处瓦片进行在线融合,并将查找到的瓦片地图进行聚合,并将本次请求的地图缓存到内存缓存数据库中。提高下次相同地图服务的访问速度。达到用户在客户端访问一个聚合服务,即可获得来自多个地区的地图服务叠加而成的地图瓦片,减轻了用户大量访问瓦片产生的网络和客户端运行的压力,提高了地图服务聚合的访问效率。
44.步骤6包括:创建影像数据服务应用程序,在配置文件中,添加影像数据服务所需的第三方依赖,并基于空间网格剖分的理念,将全球沿经纬线方向进行四等分二维剖分,得到四个区域相同的影像数据服务,以得到的影像数据服务作为空间剖分基础,根据用户访问量、数据精细度进行四叉树细分(基于空间网格剖分的理念将全球沿经纬线方向进行四等分,得到四个区域相同的影像数据服务,以第一个区域为例进行说明,如果第一个区域用户访问量大(通常默认访问量超过5000会判断为访问量大,用户也可以自定义访问量上限)、数据精细度高(通常以该区域的分辨率来判断数据的精细度),又会将该区域沿经纬线方向再次进行四等分,以此类推),实现影像数据服务。
45.该影像数据服务是基于分布式计算的影像数据服务,提供影像切片,影像矫正服务。影像切片是根据定义的瓦片切片规则,进行影像数据,高程数据的切片和存储。常见的影像切片规则有谷歌切片规则,以web墨卡托投影为基础的,在第一层级将地图一分为四的规则。另一类是以天地图切片规则为代表的,以wgs84坐标系为基础的,在第一层级将地图一分为二的规则。基于分布式计算的影像数据服务,根据切片规则将切片任务进行分布式计算,并统一存储到数据库中。现有影像数据处理技术,往往都是多线程阻塞式处理,启动多个线程根据切片规则逐层级的处理数据,下一级的数据处理往往依赖上一级的数据处理结果。基于微服务架构的影像数据服务,在处理数据时,网关根据影像范围,将影像数据负载均衡到一个或多个影像数据服务中,影像服务集群同时并行处理影像的0级到10级数据,互相不依赖,且数据处理分布在不同的服务器上,达到数据的快速处理与存储。影像数据矫正,现有技术通常都是多线程一次性处理。本发明通过网关将数据负载到一个或多个影像数据服务中,影像数据集群并行矫正影像数据,并将矫正后的影像进行合并。
46.步骤7包括:创建一个模型服务应用程序,在配置文件中,添加模型服务所需的第三方依赖,实现模型服务。模型服务对外提供模型数据的解析,模型数据的发布等功能,便于场景中增加模型。
47.步骤8包括:创建气象水文数据服务应用程序,在配置文件中,添加气象水文数据服务所需的第三方依赖,并基于空间网格剖分的理念,将全球沿经纬线方向进行四等分二维剖分,得到四个区域相同的气象水文数据服务,以得到的气象水文数据服务作为空间剖分基础,根据用户访问量进行四叉树细分(基于空间网格剖分的理念将全球沿经纬线方向进行四等分,得到四个区域相同的气象水文数据服务,以第一个区域为例进行说明,如果第一个区域用户访问量大(通常默认访问量超过5000会判断为访问量大,用户也可以自定义访问量上限),又会将该区域沿经纬线方向再次进行四等分,以此类推),实现气象水文数据服务,提高气象水文数据服务响应能力和数据处理能力。气象水文数据服务对外提供气象水文数据的解析,存储,搜索,分析等功能。
48.步骤9包括:
49.在已经构建完成的微服务模块程序中的依赖管理配置文件中添加docker依赖,编写dockerfile文件并执行创建docker镜像的maven镜像。
50.通过负载均衡和空间网格剖分法能够保证即使是在负载很重的情况下,服务器也能做出快速响应以及当其中的一台或几台服务器不可用时,服务不会中断。本发明提高了地理信息服务系统的高并发响应速度,和数据处理能力。
51.本发明将整个地理信息服务系统按照地理数据源异构的特性,划分为多个不同的微服务,如地图服务,模型服务,影像数据服务,气象水文服务等。同时又根据空间网格剖分法将每个微服务划分为多个区域服务体。每个微服务根据请求量和处理数据量,可以选择集群部署到不同的服务器,减轻单个服务器的处理压力。同时提供了拆分后各个微服务的集成管理能力,通过服务中心,配置中心,网关服务,服务监控与统计。将拆分后的服务进行了统一的管理和调度。提高了地理信息服务系统的大数据处理能力和高并发请求响应能力,使其便于扩展,易于部署到云服务器上。
52.本发明基于微服务的架构方法做到了去中心化数据管理,在地理信息系统中,最主要的一个模块就是地理数据的管理,我们根据业务的不同会有不同的业务数据,而不同的业务数据又有自己特有的数据属性,为了能够满足这些要求,单体应用在实现时,往往采用数据库设计时包含所有的业务数据属性,这样的数据库设计是有很大的数据冗余的,数据处理效率自然就会很低,而微服务架构方法,每个微服务都可以拥有独立的数据库,这样每个微服务根据数据库访问特点,数据量特点,处理的业务数据特点可以选择不同的数据库管理系统。数据处理专一而精准所以数据处理效率大大提高。
53.基于微服务的架构方法做到了服务治理,微服务不只简单的对应用划分,还包括服务注册/发现,配置中心,网关,服务熔断,过载保护等,因此在各微服务的管理和监控上也可以做到实时掌控与某一个微服务的快速集群管理。
54.拆分后的服务分别部署到不同的服务器上,并与网关服务,配置中心服务,服务监控与统计服务一起注册到服务中心,由服务中心管理。当用户请求服务时,请求首先到达网关服务,网关服务再去服务中心获得目前所有可用的微服务,然后根据负载均衡策略(负载均衡策略有权重策略和轮询策略,当服务中心中的某个服务有多个时,如地图服务在服务
中心中注册了五个,轮询策略会将用户的请求按照顺序循环分配给五个服务,权重策略根据服务的权重,将用户的请求优先分配给权重大的服务)和空间剖分方法将请求路由到对应的服务,提高地理信息服务系统的高并发响应能力。配置中心提供配置信息的热更新(即不用重新启动某个微服务而实现该微服务中配置信息的更新,如影像数据服务中,数据存放路径信息的更新)。服务监控与统计服务根据服务中心提供的服务发现能力,获得当前所有注册到服务中心的服务,并通过心跳机制(每隔一定的时间,去调用各微服务接口,查看服务是否有响应)监控所有微服务的健康状态,同时根据日志信息统计各个微服务的访问量。本发明实现了地理信息服务系统的分布式集群部署和整个生命周期的管理,提高了地理信息服务系统的大数据处理能力和高并发请求响应能力,使其便于扩展,易于部署到云服务器上。
55.本发明使用spring boot(spring boot是一个框架,一种全新的编程规范,他简化了框架的使用)开发应用微服务。
56.本发明的有益效果是:
57.1、在高并发情况下提升地图的加载效率与数据的处理能力。
58.2、灵活的分布式集群部署并可实现服务的负载均衡。
59.3、提供服务治理能力,将所有的服务都做了统一的管理,都放置在了服务中心,使的更好实现单个服务的集群部署。
60.4、使服务能够快速部署到云服务器上。
附图说明
61.下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和其他方面的优点将会变得更加清楚。
62.图1是本发明流程图。
63.图2是本发明的部署架构图。
具体实施方式
64.如图1和图2所示,本发明使用spring boot(spring boot是一个框架,一种全新的编程规范,他简化了框架的使用)开发应用微服务,并实现服务中心,配置中心,网关服务,服务监控与统计,地图服务,模型服务,影像数据服务,气象水文数据等功能,通过服务中心将复杂多元的服务模块进行精细化管理,网关服务提供智能路由以及负载均衡,配置中心为各应用的所有环境提供了一个中心化的外部配置,使得维护更加方便简单,服务的监控与统计实现了服务状态的监控管理和访问量的统计,使用户能够知道各个服务的运行状态与访问量,影像数据服务,气象水纹数据服务主要是基于微服务架构开发的一整套业务处理微服务,地图服务提供矢量、栅格数据的web服务化,实现shape文件、影像文件的发布功能,对外提供ogc的标准web服务。
65.本发明的原理在于:基于微服务架构的地理信息服务系统的构建方法由服务中心,配置中心,网关服务,服务监控与统计,地图服务,模型服务,影像数据服务,气象水文数据服务等组成。
66.由上述各个服务的互相联动,可供用户在平时使用时,能够处理基于地理信息数
据的服务发布、获取、管理等功能,并能够在使用过程中实时监控各服务的运行状态,通过该系统可以发布ogc标准的服务供其他的客户端调用,也可以实现服务的监控与管理。
67.其构建方法如下:
68.一、服务中心
69.服务发现是微服务架构中关键原则之一,服务中心提供服务的发现与注册功能,使用eureka能够快捷方便的实现服务中心。
70.具体的服务发现及注册的实现步骤如下:
71.(1)创建一个服务中心应用程序,在配置文件中引入eureka的相关依赖。
72.(2)在服务中心服务的启动类上添加注解@enableeurekaserver,@enablediscoveryclient,在服务中心服务的启动类直接运行main方法即可启动服务中心服务。在其他服务中,首先在依赖配置文件中添加服务注册依赖,其次在application主类中添加注解@enablediscoveryclient,然后在配置文件中添加关于服务注册的配置信息,最后启动服务,eurekaclient即可将服务自动注册到服务服务中心。在浏览器打开注册服务中心的地址,可观察到注册在线的服务实例。
73.二、启动配置中心服务
74.配置中心为系统提供外部化配置支持,使系统可以在不关闭的情况下更新配置,做到配置的热更新。使用config能够快速简单的实现配置中心服务,具体实现步骤如下:
75.(1)创建一个配置中心应用程序,在依赖配置文件中引入配置中心服务config的相关依赖。
76.(2)在配置中心微服务的入口类添加@enableconfigserve注解,开启配置中心服务器的功能;在程序的配置文件中添加配置中心信息,如配置文件的仓库地址,消息服务(rabbitmq一种信息中间件)地址等信息。
77.(3)在需要配置中心的目标程序中添加配置中心依赖,在其配置文件bootstrap.properties中添加关于配置中心的相关信息,配置成功后即可在程序中通过@value注解获取配置中心文件的内容,在获取配置文件内容的类上使用@refreshscope注解,当更新仓库中配置文件的值时,调用refresh接口,程序中的该值也会进行更新。
78.(4)在配置中心服务的启动类上添加@enablediscoveryclient注解,运行启动类的main方法即可启动配置中心服务并将其注册到服务中心。
79.三、启动网关服务
80.网关服务是微服务框架不可或缺的部分;通过网关可以统一向外部系统提供rest api,网关提供了动态路由、监控、回退、安全等功能,网关并不依赖服务中心,可以脱离服务中心运行。
81.具体网关服务的实现步骤如下:
82.(1)创建一个网关服务应用程序,在网关模块的pom.xml文件中,引入网关服务的相关依赖。
83.(2)在网关服务的启动类上添加用于开启网关的注解和@enablediscoveryclient(被服务中心发现)注解,启用网关服务,在配置文件中配置网关服务的相关信息(路由地址,服务端口,服务中心地址),在网关服务的启动类直接运行main方法即可启动网关服务。
84.(3)负载均衡,通过网关的转发功能,负载均衡策略,和服务中心的服务发现功能。
两者结合将前端的请求按负载均衡策略分配到所请求服务的集群中。
85.四、服务监控与统计
86.服务监控与统计,实现所有微服务的监控,与各服务对外提供服务的使用统计情况。采用springboot admin监控各服务对外暴露出来的端点,进行服务运行状态的监控,做到服务状态的快速可知。通过日志统计各微服务的使用情况。
87.具体实现如下:
88.(1)创建一个服务监控与统计应用程序。在服务监控与统计应用程序的pom文件中引入服务监控与统计的相关依赖。
89.(2)在服务监控与统计工程启动类中添加@enableadminserve和@enablediscoveryclient注解,开启服务监控。在配置文件中添加服务监控的相关配置,包括服务中心地址,配置中心地址,对外暴露端口的配置management等信息。运行服务监控与统计类的main方法启动服务监控服务。
90.五、模型服务
91.模型服务是地理信息服务系统的一个功能模块。模型服务对外提供模型数据的解析,模型数据的发布等功能,便于场景中增加模型。。
92.模型微服务集群具体实现步骤如下:
93.(1)创建一个模型服务应用程序,在程序的pom.xml文件中引入服务中心、模型处理等的相关依赖。
94.(2)在模型服务的启动类添加@enablediscoveryclient注解,将服务注册到服务中心,运行启动类main方法,即可启动模型服务。服务的集群部署,修改服务的端口号,使用maven将服务发布成jar包,形成模型服务集群。或者将服务部署到不同的ip主机中,形成集群。
95.六、地图服务
96.地图服务是地理信息服务系统的基础与根本功能,提供矢量,栅格数据的web服务化。实现shape文件,影像文件的发布功能,对外提供ogc的标准web服务。使地理信息系统拥有基础的场景。具体实现步骤如下:
97.(1)创建一个地图服务应用程序,在应用程序的pom文件中添加地图服务需要的依赖。
98.(2)在地图服务的配置文件application.yml添加相关配置,如服务中心地址,对外暴露接口配置等信息,并在配置中心中编写地图服务配置文件对应的空间网格剖分规则。
99.(3)在服务的启动类添加@enablediscoveryclient,启动地图服务并将其注册到服务中心。部署时使用maven工具将服务打包成jar,根据需求可以选择集群部署。
100.七、影像数据服务
101.创建一个影像数据服务应用程序,在配置文件中,添加影像数据服务所需的第三方依赖,并在配置中心中编写影像数据服务配置文件对应的空间网格剖分规则。实现影像数据服务。影像数据服务对外提供影像数据的处理,如卫星原始影像的矫正,影像数据的切片,影像数据的重投影等功能。
102.八、气象水文数据服务
103.创建一个气象水文数据服务应用程序,在配置文件中,添加气象水文数据服务所需的第三方依赖,并在配置中心中编写气象水文数据服务配置文件对应的空间网格剖分规则。实现气象水文数据服务。气象水文数据服务对外提供气象水文数据的解析,存储,搜索,分析等功能。
104.九、使用docker构建微服务
105.在已经构建完成的微服务模块程序中的依赖管理配置文件中添加docker依赖,编写dockerfile文件并执行创建docker镜像的maven镜像。
106.当建立微服务的集群时,我们被强迫面对数据的最终一致性问题,这是因为每个微服务都会处理数据,并改变数据,所以数据的一致性很关键。
107.处理数据的一致性,对于结构性数据,我们统一存储在数据库中,所有的相同微服务统一操作同一数据库,保持数据的一致性,对于地图服务数据,我们通过消息中间件保持数据的一致性,当某个服务改变了数据时,通过rabbitmq消息中间件告知其他服务,其他服务通过接口更新地图服务数据,使所有地图微服务的数据都保持一致。
108.为优化上述实施步骤,采取的具体措施还包括:
109.服务中心提供一个服务注册与服务发现的功能,以实现中间层服务器的负载平衡和故障转移,服务的提供者(这里指注册到服务中心的服务)启动后会将服务信息发送给服务中心,服务中心接收到之后会写入注册表中,然后同步(异步方式)给其他节点保证数据一致性。
110.服务的提供者(这里指注册到服务中心的服务)通过向服务中心发送心跳(默认每30秒)来续约服务。如果客户端持续不能续约,服务中心将在大约90秒内从服务器注册表中删除。注册信息和续订被复制到集群中的服务中心的所有节点。以此来确保当前服务还处于运行状态,可以被调用。
111.当某个服务需要调用其他服务时。在客户端(这里指注册到服务中心的服务)启动后会拉取服务中心的其他服务信息,需要调用时,在客户端的本地缓存中获取信息,调用服务。
112.在分布式开发架构中,任何单点的服务都不能保证不会中断,因此需要服务注册发现机制,某个节点中断后,服务消费者能及时感知到保证服务高可用。
113.进一步地说明通过服务中心和网关服务请求服务流程如下:
114.用户请求服务a(如气象水文数据服务),网关会到服务中心去找服务a(如气象水文数据服务)的节点信息,如果找到服务a(如气象水文数据服务)的节点信息,负载均衡器会判断那个服务a(如气象水文数据服务)可以处理当前的请求,如果某个服务a(如气象水文数据服务)正在处理请求,负载均衡器会接着找其他服务a(如气象水文数据服务),直到找到有处理能力的服务a(如气象水文数据服务),网关会将请求发送给找到的服务a(如气象水文数据服务),服务a(如气象水文数据服务)请求成功后会将成功信息反馈给用户,这样就实现了服务的负载均衡。
115.通过负载均衡能够保证即使是在负载很重的情况下,服务器也能做出快速响应以及当其中的一台或几台服务器不可用时,服务不会中断。
116.进一步地进行功能验证:
117.一、负载均衡测试
118.修改影像数据服务端口号为8090,8099,8088,使用maven分别打包发布,形成三个影像数据微服务应用程序。
119.依次启动服务中心,配置中心,网关服务,影像数据微服务集群。输入服务中心地址,查看当前服务中心中已经存在三个影像数据微服务。访问影像数据微服务的同一个接口,发现启动的三个不同端口号的影像数据微服务交替执行。
120.二、性能测试
121.使用地图服务微服务系统,进行如下实验:
122.1、发布地图数据服务,并加载发布的地图服务
123.2、通过缩放地图可以看到效果显著,响应速度经前后对比单体服务的请求平均时间为526.25毫秒,集群部署后的平均请求时间为160.6毫秒。
124.本发明提供了一种基于微服务架构的地理信息系统构建方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献