由于多任务切图过程中不同的缓存类型(原始、紧凑或 MongoDB)、切图数据和瓦片的存储位置(本地或共享)、切图方式(单机多任务或多机多任务)等多种因素均会对切图效率产生一定影响,为使用户配置出适合自己当前环境的最优切图方案,通过反复多次的测试验证,整理出来四类测试场景,通过以下场景切图效率对比,分析总结得出合理的结论,为用户部署多任务切图提供参考和建议。
1.单机多任务切图:比对单机多任务切原始、紧凑或 MongoDB 型瓦片的切图效率。
2.多机多任务切图:比对用多机多任务切原始、紧凑或 MongoDB 型瓦片的效率切图效率。
3.本地和远程路径切图:比对切图数据和瓦片存储在本地和远程对切图速率的影响。
4.矢量/栅格地图切图:比对多任务切矢量地图和栅格地图的切图效率。
测试数据与环境
以上四类场景分别使用了相同矢量地图数据、切图范围、切图比例尺以及瓦片参数均相同,具体信息如下:
图:单机多任务切 MongoDB 型瓦片 |
图:单机多任务切原始型瓦片 |
图:单机多任务切紧凑型瓦片 |
① 对于原始型、紧凑型、MongoDB 型瓦片,相对于单机上的单进程切图,单机上的多进程切图都可以显著提高切图效率。
② 每个切图机器最适合的进程数是CPU核数*2,即双核CPU开4个进程,4核开8个以此类推。
③ MongoDB 瓦片存储方式,提升的效率最高,普通4核PC机平均提升4-5倍,测试中最高可提升到近6倍。MongoDB 型>紧凑型>原始型。
图:多机多任务切 MongoDB 型瓦片 |
图:多机多任务切原始型瓦片 |
图:多机多任务切紧凑型瓦片 |
① MongoDB 瓦片,在单机开满切图进程(详见单机多进程测试结论)的基础上,通过继续增加新的切图节点(即额外的切图机器),切图效率可持续提升。使用5个节点时,矢量效率提升15倍。
② 原始瓦片,在单机开满进程的基础上,再增加新的节点,效率基本没有提升。建议使用场景是单台高性能的机器多任务并行。
③ 紧凑瓦片,在单机开满进程的基础上,再增加新的节点,效率有提升,但是效率提升不明显。建议使用场景是单台高性能的机器多任务并行。
切图地图和瓦片存储位置来自本地目录还是共享目录,形成了4种切图场景。
每台机器开启四个切图子任务,得到如下效率对比图:
图:本地和远程路径切图效率 |
① 原始型瓦片,地图来自本地并且本地存储瓦片的时候,效率最高。大规模切图应用推荐此场景。
② 紧凑型瓦片,数据来自共享目录时效率略低,不过也跟MongoDB效率相当。
③ MongoDB 瓦片,受数据来源和存储位置影响不大。
分三种场景:本地 MongDB,远程 MongDB 和本地紧凑。使用一个切图节点,每个节点开启4个切图进程。 得到如下效率比对图:
图:矢量/栅格地图切图效率 |
结果分析:
通过上述四个场景的可总结得到如下结论:
通过上述结论,用户可根据自身切图数据情况,瓦片类型,以及计算机性能合理选择切图方式。切图过程中,根据机器资源,增加/减少进程数,做到合理有效地利用计算机资源,最大限度的提升切图效率。