本发明涉及地理信息领域一种切片地图服务的路由与分发技术,特别是涉及一种标准松散型结构的切片地图服务的轻量化、动态配置与发布,通过安全认证与路由规则定义切片服务的访问方式,满足切片服务的共享、安全要求。
背景技术:
切片地图服务应用于地理信息行业的地图加载展示环节,特别是基础底图的应用展示,是地图缓存服务区,具有使地图和图像服务更快、更有效运行的特点。由于切片地图服务中的图片不需要服务器实时生成,大大提高了服务器的性能,但同时也带来了服务的自定义困难、安全性不高等问题,目前的切片地图服务都依赖于专业的gis服务器进行发布,使得原本简单的文件存取服务必须透过复杂的服务容器发布,增加了实施成本,带来了控制的不可见性,因此急需要一种轻量级的自主发布切片地图服务的机制,同时满足对服务的路由规则与分发策略控制要求。
目前现有的切片地图服务以主流的arcgisserver或开源的geoserver发布为主,对其依赖程度偏高;亦或是通过自定义形式发布服务,缺乏有效的监控与管理措施,导致切片数据的外流与切片服务的滥用。
技术实现要素:
为克服上述缺点,本发明的目的在于提供一种松散型切片地图服务的路由与分发方法,解决松散型切片服务的自主发布、标准路由与有效分发问题。
为了达到以上目的,本发明采用的技术方案是:一种松散型切片地图服务的路由与分发方法,依靠地图配置缓存信息,通过静态图片来提供地图服务,采用松散型切片以单独的图片文件形式存储,使用基于springcloudzuul的网关技术控制切片的路由与分发,以token令牌调用的形式保证服务调用的安全性;其步骤为:
步骤1:将地图内容进行切片,创建规则正方形图片,生成配置信息文件,保存到本地或远程文件服务器中,确保文件服务器对应地址可以访问;
(2)配置切片服务的基本信息,包括编码、名称、描述、区域、编目、标签等信息,并将对应生成切片的文件服务地址与配置信息相匹配保存;
(3)配置切片服务的坐标参考系,按照生成切片的配置信息文件中标识的坐标系进行关联;
(4)配置切片服务的前缀信息,按照生成切片文件服务的图片根目录进行关联;
(5)配置切片服务的后缀信息,按照生成切片的配置信息文件与图片后缀进行综合配置,包括三种格式png图片格式、jpg图片格式、mixed混合模式,混合模式指的是同时包含png与jpg两种图片格式的兼容性后缀;
(6)将所有切片服务信息保存完毕后通过基于springboot的restful服务发布成切片地图服务,将生成切片的配置信息缓存到服务器上,进行重新组装与拼接,输出到发布的切片地图服务文本信息中;
(7)将发布后的切片地图服务地址按照分发规则注册到网关中,配置服务的名称、路径、id、区域、标签等信息;
(8)配置网关服务是否可重试、是否有前缀等信息,提供服务的网络延迟容错与服务器多次重试机制,定义组织级便于管理的规则前缀信息;
(9)将所有服务网关信息保存完毕后通过springcloud的zuul组件将服务发布完毕,提供反向代理与负载均衡功能;
(10)在切片地图服务调用时,先通过用户名与密码进行身份认证获取密钥,再通过网关分发的服务进行访问,使用动态密钥访问获得切片服务的配置信息与路由后的地址,完成松散型切片地图服务的访问。
进一步来说,所述步骤1中的切片生成规则应该满足正方形的切片出图,建议边长为256或512的标准图片,切片可根据分辨率要求设置为96dpi;按照投影级别分为若干层保存切片,以l开头代表每层的切片文件夹,从0开始依次编号每一个层次的文件夹名,例如l00、l01、l02以此类推,其下一级目录为对应的行号文件夹,以r开头+八位十六进制数,最终是存放对应列的切片图片,已c开头+八位十六进制数。在默认的切片起点下,图片宽度是256,图片高度是256,根据设置的比例尺来计算地图数据所在整个网格中的行列号,计算公式如下:
col1=(int)math.floor((point.x1-this.x1)/256/plottingresolution);
row1=(int)math.floor((math.abs(point.y1-this.y1))/256/plottingresolution);
其中,point是当前点坐标,this指的是切片起点,plottingresolution是指当前level下的地图分辨率。计算结果只求整数部分且要取绝对值。
进一步来说,所述步骤4中的切片服务前缀信息所表示的是生成切片文件服务的所有切片保存的文件夹路径,以arcgis切片的结果为例是”alllayers_”,根据具体存放的文件服务器地址动态配置,满足不同存放路径的要求。
进一步来说,所述步骤5中的切片服务后缀信息所表示的是切片具体的的图片格式,支持.png和.jpg两种格式,前者支持透明图片,图片大小根据地图显示的清晰度以及地图显示的速度进行权衡压缩实现理想的显示效果;通过混合模式可以达到地图服务有效内容的边界处采用.png透明图片防止图层遮盖导致明显的白块区域,影响美观,内部根据实际要求采用.jpg进行压缩提高访问效率。
进一步来说,所述步骤6中的根据切片名称获取对应的服务配置jsonobject串,以“/{tilecode}/mapserver”的形式输出,对于单个切片的拼接通过切片所在层数layer、切片所在行数row、切片所在列数col三个参数定位到对应的文件,按照“{tilecode}/mapserver/tile/{layer}/{row}/{col}”的形式单个请求切片文件,当请求的切片不存在时服务返回默认的图片imgnull.png,当请求的切片存在时服务返回对应的切片图片,例如:l00/r00000001/c00000001.png。
进一步来说,所述步骤9中的zuul组件具备反向代理、负载均衡、权限控制等功能。有如下特点:
(1)由客户端内部程序实现,不需要额外的负载均衡器软硬件投入;
(2)程序内部需要解决业务服务器不可用的问题,服务器故障对应用程序的透明度小;
(3)程序内部需要解决业务服务器压力过载的问题。
可使用在如下场景中:
(1)可以选择为初期简单的负载均衡方案,和dns负载均衡一样;
(2)比较适合于客户端具有成熟的调度库函数,算法以及api等;
(3)符合对服务器入流量较大的业务,如httppost文件上传,ftp文件上传,memcache大流量写入等;
(4)可以结合其他负载均衡方案进行架构。
进一步来说,所述步骤10中的路由与分发过滤包含token验证过滤、ip黑白名单过滤、路由访问数量过滤,分别有以下特征:
(1)token验证过滤,根据配置的自定义token字符串作为参数,用户输入事先分配的username与password,并标识appid参数表示选择的网关认证器,默认为“base-admin”,申请客户端密钥头,以返回session中的用户信息,返回的密钥支持动态变换,默认为5分钟,总长为317位,采用sh256加密算法;
(2)ip黑白名单过滤,包括三种模式:none、black、white三种形式,分别是不过滤、黑名单、白名单。网关服务的黑名单将阻挡指定的用户无法访问服务,针对不允许特定用户访问的场景;网关服务的白名单将允许指定的用户放行访问服务,针对只允许特定用户访问的场景;
(3)路由访问数量过滤,监听路由固定时间段内服务访问的次数并记录到数据库中,默认时间间隔是5分钟,可动态配置,采用异步监听的手段,对服务调用的用户无感,且不影响服务调用的效率和时间,能够大大缩减服务数量统计的难度与复杂度。
其中步骤1~步骤5为将切片文件到切片服务的在线配置发布管理;步骤6~步骤10为切片服务网关注册与监控管理。
1.切片文件到切片服务的在线配置发布管理
将切片文件中的配置文件conf.cdi与conf.xml文件中的信息经过服务重新拼接输出,具体而言切片缓存tilecacheinfo的关键字段有:坐标参考系spatialreference(包括wkt、xorigin、yorigin、xyscale、zorigin、zscale、morigin、mscale、xytolerance、ztolerance、mtolerance、highprecision、wkid、latestwkid子节点),切片原点tileorigin(包括x、y子节点),切片列宽度tilecols,切片行高度tilerows,分辨率dpi,清晰分辨率precisedpi,切片层次信息lodinfos(每层都包含一个lodinfo节点,描述第几层level、地图比例尺scale、地图范围resolution子节点,通常有多少层级就会包含多少个这样的节点)。切片图像信息tileimageinfo包含图片的格式方式:png、jpg、mixed,压缩质量compressionquality表示图片被压缩的程度,是否抗锯齿antialiasing。切片存储信息cachestorageinfo包含存储的格式化形式storageformat与保存包的大小packetsize。以上信息构成切片的缓存配置信息,通过服务输出,并允许客户端的访问拼接地址调用标准api接口获得对应的切片文件进行前台渲染。
2.切片服务网关注册与监控管理
通过服务注册客户端eurekaclient把具体的切片服务注册到服务发现服务端eurekaserver上,通过本地文件或远程git源的配置管理cloudconfig与可传播配置的集群消息总线cloudbus管理切片服务配置,外部或内部访问切片服务,经过api网关zuul进行路由、认证、监控等功能。其中路由到对应的基于客户端的负载均衡robbin或fein上,robbin或fein负载到对应的切片服务上,返回结果,如果切片地图服务不可用的话,通过断路器聚合监控hystrixturbine,快速返回结果,避免请求阻塞。此外,通过检测器monitor与仪表盘dashboard展示切片服务的运行情况,在面向各种服务的调用时加入注册健康检查registerhealthcheck切片服务的可运行,最终面向切片服务具体的使用方。
本发明所能解决的问题是:
(1)解决松散型切片的在线、动态发布服务问题,支持服务发布者灵活配置;
(2)解决松散型切片服务的注册、订阅、分发、监控等服务使用过程中的管理问题,满足服务使用者的快速调用。
本发明的有益效果是:本发明能够满足松散型切片图片无需专业化gis服务器的自定义配置信息发布,对发布的服务进行逻辑封装与地址跳转,隐藏服务真实地址,控制服务的调用情况。
附图说明
图1是本发明实施例中切片定义的方法与参数示意图。
图2是本发明实施例的流程示意图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
实施例
请参阅图1和图2,本发明实施例中提出了一种松散型切片地图服务的路由与分发方法,其步骤参见如下:
s1:将地图内容进行切片,创建规则正方形图片,生成配置信息文件,保存到本地或远程文件服务器中,确保文件服务器对应地址可以访问;上述切片时需要确定切片方案的原点、切片宽度、切片高度,并确定地图原点;
s2:配置切片服务的基本信息,包括编码、名称、描述、区域、编目、标签等信息,并将对应生成切片的文件服务地址与配置信息相匹配保存;
s3:配置切片服务的坐标参考系,按照生成切片的配置信息文件中标识的坐标系进行关联;
s4:配置切片服务的前缀信息,按照生成切片文件服务的图片根目录进行关联;其中:切片服务的前缀信息所表示的是生成切片文件服务的所有切片保存的文件夹路径,以arcgis切片的结果为例是”alllayers_”,根据具体存放的文件服务器地址动态配置,满足不同存放路径的要求;
s5:配置切片服务的后缀信息,按照生成切片的配置信息文件与图片后缀进行综合配置,包括三种格式png图片格式、jpg图片格式、mixed混合模式,mixed混合模式指的是同时包含png与jpg两种图片格式的兼容性后缀;
s6:将所有切片服务信息保存完毕后通过基于springboot的restful服务发布成切片地图服务,将生成切片的配置信息缓存到服务器上,进行重新组装与拼接,输出到发布的切片地图服务文本信息中;
s7:将发布后的切片地图服务地址按照分发规则注册到网关中,配置服务的名称、路径、id、区域、标签等信息;
s8:配置网关服务是否可重试、是否有前缀等信息,提供服务的网络延迟容错与服务器多次重试机制,定义组织级便于管理的规则前缀信息;
s9:将所有服务网关信息保存完毕后通过springcloud的zuul组件将服务发布完毕,提供反向代理与负载均衡功能;
步骤10:在切片地图服务调用时,先通过用户名与密码进行身份认证获取密钥,再通过网关分发的服务进行访问,使用动态密钥访问获得切片服务的配置信息与路由后的地址,完成松散型切片地图服务的访问。
在上述步骤的s1中,地图内容的切片应该满足正方形的切片出图,建议边长为256或512的标准图片,切片可根据分辨率要求设置为96dpi;按照投影级别分为若干层保存切片,以l开头代表每层的切片文件夹,从0开始依次编号每一个层次的文件夹名,例如l00、l01、l02以此类推,其下一级目录为对应的行号文件夹,以r开头+八位十六进制数,最终是存放对应列的切片图片,已c开头+八位十六进制数。在默认的切片起点下,图片宽度是256,图片高度是256,根据设置的比例尺来计算地图数据所在整个网格中的行列号,计算公式如下:
col1=(int)math.floor((point.x1-this.x1)/256/plottingresolution);
row1=(int)math.floor((math.abs(point.y1-this.y1))/256/plottingresolution);
其中,point是当前点坐标,this指的是切片起点,plottingresolution是指当前level下的地图分辨率。计算结果只求整数部分且要取绝对值。
在上述步骤的s5中,切片服务后缀信息所表示的是切片具体的的图片格式,支持.png和.jpg两种格式,前者支持透明图片,图片大小根据地图显示的清晰度以及地图显示的速度进行权衡压缩实现理想的显示效果;通过混合模式可以达到地图服务有效内容的边界处采用.png透明图片防止图层遮盖导致明显的白块区域,影响美观,内部根据实际要求采用.jpg进行压缩提高访问效率。
在上述步骤的s6中,根据切片名称获取对应的服务配置jsonobject串,以“/{tilecode}/mapserver”的形式输出,对于单个切片的拼接通过切片所在层数layer、切片所在行数row、切片所在列数col三个参数定位到对应的文件,按照“{tilecode}/mapserver/tile/{layer}/{row}/{col}”的形式单个请求切片文件,当请求的切片不存在时服务返回默认的图片imgnull.png,当请求的切片存在时服务返回对应的切片图片,例如:l00/r00000001/c00000001.png。
在上述步骤的s9中,zuul组件具备反向代理、负载均衡、权限控制等功能。
有如下特点:
(1)由客户端内部程序实现,不需要额外的负载均衡器软硬件投入;
(2)程序内部需要解决业务服务器不可用的问题,服务器故障对应用程序的透明度小;
(3)程序内部需要解决业务服务器压力过载的问题。
可使用在如下场景中:
(1)可以选择为初期简单的负载均衡方案,和dns负载均衡一样;
(2)比较适合于客户端具有成熟的调度库函数,算法以及api等;
(3)符合对服务器入流量较大的业务,如httppost文件上传,ftp文件上传,memcache大流量写入等;
(4)可以结合其他负载均衡方案进行架构。
在上述步骤的s10中,路由与分发过滤规则包含token验证过滤、ip黑白名单过滤、路由访问数量过滤,分别有以下特征:
(1)token验证过滤,根据配置的自定义token字符串作为参数,用户输入事先分配的username与password,并标识appid参数表示选择的网关认证器,默认为“base-admin”,申请客户端密钥头,以返回session中的用户信息,返回的密钥支持动态变换,默认为5分钟,总长为317位,采用sh256加密算法;
(2)ip黑白名单过滤,包括三种模式:none、black、white三种形式,分别是不过滤、黑名单、白名单。网关服务的黑名单将阻挡指定的用户无法访问服务,针对不允许特定用户访问的场景;网关服务的白名单将允许指定的用户放行访问服务,针对只允许特定用户访问的场景;
(3)路由访问数量过滤,监听路由固定时间段内服务访问的次数并记录到数据库中,默认时间间隔是5分钟,可动态配置,采用异步监听的手段,对服务调用的用户无感,且不影响服务调用的效率和时间,能够大大缩减服务数量统计的难度与复杂度。
上述s1~s5为将切片文件到切片服务的在线配置发布管理;s6~s10为切片服务网关注册与监控管理。
切片文件到切片服务的在线配置发布管理:将切片文件中的配置文件conf.cdi与conf.xml文件中的信息经过服务重新拼接输出,具体而言切片缓存tilecacheinfo的关键字段有:坐标参考系spatialreference(包括wkt、xorigin、yorigin、xyscale、zorigin、zscale、morigin、mscale、xytolerance、ztolerance、mtolerance、highprecision、wkid、latestwkid子节点),切片原点tileorigin(包括x、y子节点),切片列宽度tilecols,切片行高度tilerows,分辨率dpi,清晰分辨率precisedpi,切片层次信息lodinfos(每层都包含一个lodinfo节点,描述第几层level、地图比例尺scale、地图范围resolution子节点,通常有多少层级就会包含多少个这样的节点)。切片图像信息tileimageinfo包含图片的格式方式:png、jpg、mixed,压缩质量compressionquality表示图片被压缩的程度,是否抗锯齿antialiasing。切片存储信息cachestorageinfo包含存储的格式化形式storageformat与保存包的大小packetsize。以上信息构成切片的缓存配置信息,通过服务输出,并允许客户端的访问拼接地址调用标准api接口获得对应的切片文件进行前台渲染。
切片服务网关注册与监控管理:通过服务注册客户端eurekaclient把具体的切片服务注册到服务发现服务端eurekaserver上,通过本地文件或远程git源的配置管理cloudconfig与可传播配置的集群消息总线cloudbus管理切片服务配置,外部或内部访问切片服务,经过api网关zuul进行路由、认证、监控等功能。其中路由到对应的基于客户端的负载均衡robbin或fein上,robbin或fein负载到对应的切片服务上,返回结果,如果切片地图服务不可用的话,通过断路器聚合监控hystrixturbine,快速返回结果,避免请求阻塞。此外,通过检测器monitor与仪表盘dashboard展示切片服务的运行情况,在面向各种服务的调用时加入注册健康检查registerhealthcheck切片服务的可运行,最终面向切片服务具体的使用方。
以上实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人了解本发明的内容并加以实施,并不能以此限制本发明的保护范围,凡根据本发明精神实质所做的等效变化或修饰,都应涵盖在本发明的保护范围内。