切图技术的发展 |
地图服务预缓存技术(即切图技术)的发展,经历了从简单手工操作到系统自动工作的发展历程,从单机切图、手工拆分的多机切图、共享目录存储的多机并行切图到基于分布式存储的分布式切图。
单机切图是指在一台服务器上预先切好缓存,切完后手工同步到集群内的其他 GIS 服务器并对外提供地图服务。这种传统的切图技术,对计算资源的利用率较低,且随着地图数据量的增大切图时间随之变长,海量数据切图时间可能长达数月甚至数年,严重影响工作效率,加之没有故障恢复机制,切图任务一旦出现故障,整个切图工作都要推倒重来。
随着技术的进步,地图数据的数据量已经迈进海量数据的时代,而单机切图的效率实在不能满足需求,加之硬件成本的降低,多机切图自然就成为了很多 GIS 应用的首选。在没有分布式切图软件工具的情况下,常用的多机切图方式是,根据地图的比例尺和地理范围等手工将切图任务拆分成多个子任务,然后将各个任务部署在不同的机器上进行切图,从而实现多机切图。
这种手工拆分的多机切图工作,存在以下不足:对任务的手工拆分要求很高,要兼顾数据的正确性与不同机器的硬件水平,充分利用硬件资源是很难实现的;切图过程中每台机器都需要人工维护,且很容易出现单点失效,往往一个任务的失败就会影响到整个切图工作的进度;切图得到的数据结果需要同步到其他 GIS 服务器上才能对外提供服务,但是数据同步本身也是一项漫长且容易出错的工作;如果遇到部分缓存数据需要更新的情况,则会发现更新非常不便甚至需要重新切图。因此,各行业的 GIS 应用迫切需要一种自动化的多机并行切图技术,这项技术必须不依赖手动拆分任务且数据同步时避免人工干预。
在多机切图技术的迫切需求下,出现了一种基于共享目录的多机并行切图技术,满足了应用中对于并行切图技术的需求。其主要特点是:不需要手工拆分切图任务就可协调多机并行切图,基于共享目录存储地图切片,因此不需要人工干预的数据同步。这种并行切图技术从某种程度上说,已经满足了并行切图的需求,但是其基于共享目录的地图切片存取机制本身无法满足大型应用需求,因为在高并发的大型应用环境中,这种共享目录的存储机制面临着严重的磁盘 IO 瓶颈问题,且一旦出现存储故障所有工作就要被迫暂停。
以上三种存储方式均不能满足前文提到的 GIS 地图服务面临的数据密集型、计算密集型和海量时空数据并发访问的挑战,而已有的分布式切图技术的瓶颈在于地图切片的存取方式。因此,解决上述问题的根本,是优化分布式切图技术的存储机制。
上述分布式切图使用集中的存储服务器或共享目录存储地图瓦片,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。而分布式文件系统支持将数据分散存储在多台独立的设备上并进行统一的管理,能很好地解决上述问题。分布式文件存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
在计算机硬件快速升级和云计算技术快速发展的今天,分布式存储技术已经相当成熟,且已经广泛应用于各个行业。目前常用的分布式文件系统包括 GFS、HDFS、Lustre、FastDFS、PVFS、GPFS、PFS、Ceph 和 TFS 等。分布式文件系统具有良好的可扩展性、容错性,以及内部实现对用户透明等特性:
1) 基于冗余备份机制实现高可用支持;
2) 隐藏内部存储逻辑,对用户和应用程序屏蔽各个计算机节点底层文件系统之间的差异,为用户提供统一的访问接口;
3) 具有可扩展性,当需增加存储能力时,只需添加服务器即可实现,而不需要对存储系统的结构进行重新设计,可以将网络中大量类型各异的存储设备整合起来。
分布式文件系统的上述特点,尤其相对于共享目录存储方式容易产生的磁盘 IO 瓶颈、可靠性低等方面的优势,使之成为分布式切图服务中地图瓦片存储的最佳选择。
分布式切图技术立足于充分利用组织内的硬件资源,综合利用多个节点并行切图,且基于分布式文件系统存储切图结果,力图提升切图工作与在线地图服务的效率、稳定性与可靠性。