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

用于GIS空间矢量分布式计算的负载均衡方法及系统与流程

2021-10-24 12:04:00 来源:中国专利 TAG:分布式 矢量 负载均衡 用于 计算

用于gis空间矢量分布式计算的负载均衡方法及系统
技术领域
1.本技术涉及勘探勘测技术领域,尤其是涉及用于gis空间矢量分布式计算负载均衡方法及系统。


背景技术:

2.地理信息系统(geographic information system),简称gis,是一种特定的十分重要的空间信息系统,是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。gis技术通过其强大的空间分析功能,可以轻松实现基础地理信息以及其他专题信息的展现、分析。三维gis 可获取海量空间数据,并且能对数据进行动态调度与显示。因此,借助三维gis 组织并管理空间及属性数据,并依靠文件系统与数据库,能对实际勘测设计中涉及的不同数据实施良好的组织及管理,同时为勘测设计创造便利,实现数据访问。充分利用三维gis 具有的空间分析及可视化功能,能对勘测设计数据开展复合应用,将数据整合至相同的平台,进而使设计实现一体化。
3.随着gis和遥感技术在勘测设计领域的广泛应用,日常业务对空间计算和空间产品的需求日趋增多,对空间计算的效率要求也不断提高。传统的空间计算采用gis软件(如arcgis)加载空间数据,在本地单机运行,此种方式受到机器性能的限制,计算大空间范围的运算耗时很长,也常常造成死机。关系型数据库厂商(如oracle,postgresql等)也扩展产品功能,增加支持空间运算,用户可以利用数据库和服务器计算能力进行空间计算,通常也会受到计算能力的限制,对于县域等小区域范围内矢量图层叠加分析运算,能够满足要求,但对于大范围空间运算则存在计算速度慢、耗时长等问题。


技术实现要素:

4.有鉴于此,本技术提供了用于gis空间矢量分布式计算负载均衡方法及系统,以缓解了现有技术中存在的大范围空间矢量运算存在的计算速度慢、耗时长等技术问题。
5.一方面,本技术实施例提出了一种用于gis空间矢量分布式计算的负载均衡方法,应用于包括一个主控节点和多个计算节点的分布式计算系统,包括:主控节点将待计算的空间数据文件分割为多个文件包,将所有文件包分配到各个计算节点;各计算节点对接收到的文件包进行计算,在计算过程中评估本地节点的算力数据并写入动态算力表;各计算节点通过读取动态算力表实现算力委托,或接受其它计算节点的算力委托实现算力出让,直至完成计算。
6.进一步的,所述主控节点将待计算的空间数据文件分割为多个文件包,将所有文件包分配至各个计算节点;包括:根据参考矢量文件将待计算的空间数据文件分割为多个文件包;
按照文件包的名义面积从大至小的顺序对文件包进行排序;将排序后的文件包按照n个一组分成若干组,最后一组的文件包个数小于或等于n;将第一组的文件包依次分配到编号1到n的计算节点,将第二组的文件包依次分配到编号n到1的计算节点,再将第三组的文件包依次分配到编号1到n的计算节点,依次进行下去,直至所有的文件包分配完毕。
7.进一步的,主控节点将所有文件包分配至各个计算节点之后还包括:主控节点保存空间分割文件索引表,所述空间分割文件索引表的字段包括:参考矢量文件面矢量标识、名称以及分配到的计算节点id。
8.进一步的,所述动态算力表的字段包括:计算节点id、已完成计算量、剩余计算量、剩余计算时间以及算力出让状态,其中,当计算节点剩余计算时间小于所有计算节点剩余计算时间平均值的90%,且所有计算节点剩余计算时间平均值与计算节点剩余计算时间的差大于第一阈值,则计算节点可以出让算力,算力出让状态为1,否则,算力出让状态为0,不能出让算力。
9.进一步的,各计算节点通过读取动态算力表实现算力委托,或接受其它计算节点的算力委托实现算力出让,包括:当第一计算节点发现本地节点算力不足时,通过读取动态算力表的数据获取可委托的第二计算节点,并向第二计算节点发送委托计算请求;若第二计算节点满足委托条件,向第一计算节点发送同意委托的消息;第一计算节点向第二计算节点发送待计算数据,所述待计算数据为文件包或文件包及指定计算数据段;第二计算节点对接收到待计算数据进行计算,将计算结果发送至第一计算节点。
10.进一步的,当第一计算节点发现本地节点算力不足时,通过读取动态算力表的数据获取可委托的第二计算节点,包括:所述第一计算节点读取主控节点的动态算力表,判断本地节点剩余计算时间是否大于所有计算节点剩余计算时间平均值的110%,如果为是,则所述第一计算节点从主控节点的动态算力表中获取可以委托的第二计算节点的id,第二计算节点是算力出让状态值为1且预计耗时最小的计算节点。
11.进一步的,所述方法还包括:所述主控节点汇总所有计算节点的最终计算结果,利用空间分割文件索引表生成待计算的空间数据文件的完整的计算结果。
12.另一方面,本技术实施例提出了一种用于gis空间矢量分布式计算的负载均衡系统,所述系统包括一个主控节点和多个计算节点;所述主控节点,用于将待计算的空间数据文件分割为多个文件包,将所有文件包分配到各个计算节点;所述计算节点,用于对接收到的文件包进行计算,在计算过程中评估本地节点的算力数据并写入动态算力表;还用于通过读取动态算力表实现算力委托,或接受其它计算节点的算力委托实现算力出让,直至完成计算。
13.进一步的,所述主控节点上设置主控节点控制器和动态算力表;所述主控节点控制器,用于根据参考矢量文件将待计算的空间数据文件分割为多
个文件包,将所有文件包分配到各个计算节点,然后向计算节点发送计算启动指令;所述动态算力表的字段包括:计算节点id、已完成计算量、剩余计算量、剩余计算时间以及算力出让状态,其中,当计算节点剩余计算时间小于所有计算节点剩余计算时间平均值的90%,且所有计算节点剩余计算时间平均值与计算节点剩余计算时间的差大于第一阈值,则计算节点可以出让算力,算力出让状态为1,否则,算力出让状态为0,不能出让算力;所述动态算力表由各计算节点进行更新。
14.进一步的,所述计算节点上设置计算节点控制器、算力评估模块和算力均衡模块;所述计算节点控制器,用于在接收到主控节点的计算启动指令后,对接收到的文件包进行计算;还用于对接收到的其它计算节点的待计算数据进行计算;所述算力评估模块,用于在计算期间,评估本地节点的算力数据并写入存储在主控节点上的动态算力表;所述算力均衡模块,用于通过读取动态算力表实现算力委托,或接受其它计算节点的算力委托实现算力出让。
15.与现有技术相比,本技术的技术优势在于:1、本技术实施例通过分布式存储与计算,以及单节点并发计算,能够实现大空间范围的复杂空间矢量分析和计算;2、本技术实施例依据空间分布进行首次计算分配,通过端到端协调方式进行算力动态分配,并结合节点内存存储和cpu gpu算法优化,集成空间矢量计算算法,实现大空间范围、包含海量空间元素和属性的矢量图层的空间计算,具有计算能力可扩展、计算速度快的优点;3、本技术实施例可以依赖首次分配数据进行多种计算,每次计算只需将所需数据导入并依据相同参考矢量文件进行分割和分配,已有空间矢量数据不需要再次进行分割和分配。能够减少io操作等,提高计算效率。
附图说明
16.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本技术实施例提供的用于gis空间矢量分布式计算的负载均衡系统的结构示意图;图2为本技术实施例的gis空间矢量分布式计算方法的流程图;图3为本技术实施例的算力再分配方法的流程图;图4为本技术实施例提供的用于gis空间矢量分布式计算的负载均衡方法的流程图。
具体实施方式
18.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
19.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
20.首先对本技术实施例的设计思想进行简单介绍。
21.现有的单机实现gis大范围空间矢量计算存在计算速度慢,耗时长的问题。而分布式计算可以将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。分布式系统通常由一个主控节点和多个计算节点组成。
22.对大范围空间矢量文件进行分割后文件包的大小是不相同的,这由三方面原因造成的:一是空间区域大小可能不一致;二是空间区域内空间要素数量不同;三是用户划定计算区域,部分区域不在计算范围内。因此必须考虑分布式计算的负载均衡问题。
23.针对空间分配计算区域带来的计算节点的计算量不平衡问题,本技术通过计算节点间自主协调完成计算的动态平衡和分配,能够弥补计算量的不平衡。通过增加端到端算力分配机制,计算节点端到端请求和出让计算力,完成节点算力再分配和平衡,使整个分布式计算达到负载均衡。
24.此外,在本技术中,存储节点和计算节点是相同节点,空间数据导入时按照区域分割并保存到不同存储节点,计算时直接读取本地数据,节省网络传输时间。
25.本技术基于分布式存储和分布式计算思想,结合内存存储和并行计算,集成空间矢量算法,实现数据按照空间分布式存储、存储和计算同节点和节点间计算动态自组织平衡,能够高效利用计算资源,完成大空间范围、包含海量空间元素和属性的矢量图层的空间计算。
26.在介绍了本技术实施例的应用场景和设计思想之后,下面对本技术实施例提供的技术方案进行说明。
27.实施例1如图1所示,本技术的实施例提出了一种用于gis空间矢量分布式计算的负载均衡系统,包括:一个主控节点和多个计算节点,各节点间之间通过消息总线实现消息的收发;通过数据总线实现数据的传输。
28.如图1所示,主控节点上设置:主控节点控制器101、统一安全认证模块102和数据存储模块103;其中,主控节点控制器101包括数据分配单元、分布式计算控制单元、节点维护单元和计算结果汇总单元。
29.数据分配单元,用于导入参考矢量文件和空间数据文件,依据参考矢量文件将空间数据文件分割为若干个文件包,将所有文件包分配各计算节点;具体过程包括:获取仅包含空间面的参考矢量文件和待计算的空间数据文件;其中,空间数据为大范围空间矢量;参考矢量文件可以是任意面矢量文件,但是对于全国范围内空间计算使用地市或县域边界进行分割更具有实际意义。
30.所有的空间数据文件按照参考空间文件进行分割,能够保证数据文件空间相关性。根据参考矢量文件中的面进行空间分割,将空间数据文件分割为k个文件包,文件包的大小是不相同的,所得文件包为计算原子数据,一个文件包不可再分割。
31.将k个文件包按照数据量均衡原则分配到各个计算节点,所有的计算节点按照1到n编号,具体分配方法为:a.对于每个区域的文件包,根据区域面积和区域权重计算名义面积:区域面积
×
区域权重,区域权重的默认值为1;b.按照名义面积从大至小的顺序对文件包进行排序;c.按照排序依次将文件包按照n个一组分成若干组,最后一组的文件包个数小于或等于n;d.将第一组的文件包按照计算节点编号1到n的顺序进行分配,将第二组的文件包按照计算节点编号n到1的顺序进行分配,再将第三组的文件包按照计算节点编号1到n的顺序进行分配,依次进行下去直至所有的文件包分配完毕。
32.保存空间分割文件索引和数据元文件,方便管理空间数据文件。空间分割文件索引主要字段如表1所示:表1:空间分割文件索引表主要字段
33.当需要删除无用数据时,主控节点发布删除指令给所有计算节点,计算节点删除相关数据。
34.分布式计算控制单元,用于向各计算节点发送计算启动指令,启动计算指令包括指定计算的数据和算法组合;节点维护单元,用于增加或删除计算节点,当增加计算节点后,则对分割后的文件包重新进行分配,把文件包分配到新增加的计算节点,使其承担计算任务;在删除计算节点前,则先要发送指令至待删除的计算节点,使其将存储的文件包转移到其它计算节点上。
35.计算结果汇总单元,用于从各计算节点请求获取计算结果。根据计算类型不同,计算节点的计算结果类型为数值、表格数据或矢量文件;接收并汇总各计算节点返回的计算结果,根据空间分割文件索引表将各计算节点的计算结果合并成一个完整计算结果。
36.统一安全认证模块,用于生成用于各节点之间消息传递的消息验证的令牌(token),以保证计算架构安全。
37.数据存储模块,用于通过关系数据库和文件系统存储空间计算所需数据及完整计算结果,存储空间计算所需数据包括:元数据:描述数据信息,如数据分割信息、存储节点信息等;空间数据文件:为待计算的原始输入数据;
动态算力表,用于存储各个计算节点的算力数据,主要字段包括计算节点id、已完成计算量、剩余计算量、剩余计算时间以及算力出让状态,如表2所示:表2:动态算力表主要字段
38.该动态算力表只是存储在主控节点上,主控节点并不参与后期的维护和更新。在各个计算节点的计算过程中,将算力数据写入动态算力表,因此,动态算力表不断地在更新,各个计算节点能够随时读取动态算力表,获取其它计算节点的算力数据。
39.如图1所示,计算节点上设置计算节点控制器104、算力评估模块105、算力均衡模块106、算法池107以及数据存储模块108;计算节点控制器104包括:数据接收单元、计算控制单元和计算结果发送单元;数据接收单元,用于接收主控节点发送的文件包并发送至数据存储模块,接收主控节点发送的删除数据的指令,删除对应的数据;还用于接收其它计算节点发送的文件包或文件包及指定数据段,存储在内存里;计算控制单元,用于接收主控节点的计算指令,根据计算指令读取本地的文件包的数据到内存,从算法池调用指定算法,利用指定算法对空间矢量进行计算,将中间计算结果和最终计算结果保存到内存;计算结果类型为数值、表格或矢量文件。
40.还用于对其它计算节点发送的文件包或文件包及指定数据段进行计算,将计算结果保存到内存;这种计算方式经过cpu gpu优化,可以多cpu多核并行计算,利用gpu进行计算加速,提高计算效率;计算输入数据和中间数据全部保存在内存,节省io读写时间。
41.计算结果发送单元,用于将所有文件包的最终计算结果汇总后发送至主控器,所有文件包的最终计算结果包括本地计算的放入内存的最终计算结果,以及协同计算的计算节点发送的计算结果,还用于在参与协同计算时,将内存中的计算结果回传至对应的计算节点。
42.算力评估模块105,用于在计算期间评估本节点已完成计算量,剩余计算量、剩余计算时间以及算力出让状态,其中,当计算节点剩余计算时间小于所有计算节点剩余计算时间平均值的90%,且所有计算节点剩余计算时间平均值与计算节点剩余计算时间的差大
于第一阈值,则计算节点可以出让算力,算力出让状态为1,否则,算力出让状态为0,不能出让算力。
43.其中的阈值可以为2分钟,确定这个阈值的目的在于,如果差距的时间过短,用于转移计算、文件传递和结果汇总耗费的时间可能抵消出让算力带来的效益。
44.算力均衡模块106包括:获取单元、委托请求单元和接收委托单元;每个计算节点都可能成为协同计算的委托方和被委托方。
45.获取单元,用于读取动态算力表,判断本地节点剩余计算时间是否大于所有计算节点剩余计算时间平均值的110%,如果为是,则需要算力委托,然后从主控节点的动态算力表获取可以委托的计算节点的id,可以委托的计算节点是算力出让状态值为1且预计耗时最小的计算节点。
46.委托请求单元,用于向可以委托的计算节点发送委托计算请求,当接收到可以委托的计算节点发送的同意委托的信息,向可以委托的计算节点发送文件包;若接收到不同意委托的信息,则重新通过动态算力表获取可以委托的计算节点,直至有其它计算节点同意委托。
47.其中,向可以委托的计算节点发送文件包,具体为:由于文件包是计算原子数据,在计算过程中不可分割,因此,如果本地节点有多个待计算的文件包,则将其中一个未计算的文件包发送给可以委托的计算节点;如果本地节点只有一个待计算的文件包,由于一个文件包不可再分割,因此需要将整个文件包以及需要计算的数据段发送给可以委托的计算节点。
48.接收委托单元,用于当接收其它计算节点的委托计算请求,将同意委托的信息发送给第一个发送委托计算请求的计算节点,当本地节点已经为其它计算节点提供算力出让,则将不同意委托的信息发出。
49.各计算节点间完成算力协议、发送计算数据和接收汇总计算结果,实现计算节点间算力动态平衡,不需要主控节点的参与。
50.算法池107,集成常用的空间计算算法和汇聚算法,并能够通过二次开发进行算法扩展;包括:空间计算算法池和汇聚算法池;空间计算算法池,实现集成常用矢量算法,并能够进行灵活扩展。
51.汇聚算法池,实现集成表格合并、结果汇总、矢量文件合并等算法,并能够进行灵活扩展。
52.数据存储模块108,用于通过关系数据库和文件系统,存储主控节点发送的文件包,实现本地数据存储。
53.实施例2如图2所示,本技术实施例提出了一种gis空间矢量分布式计算方法,应用于1个主控节点和2个计算节点的场景,包括:步骤201:主控节点导入参考矢量文件和空间数据文件;步骤202:主控节点将待计算的空间数据文件分割为多个文件包;步骤203:主控节点将所有文件包分配至各个计算节点;具体包括:按照名义面积从大至小的顺序对文件包进行排序;将排序后的n个文件包分成若干组,最后一组的文件包个数小于或等于n;
将第一组的文件包依次分配到编号1到n的计算节点,将第二组的文件包依次分配到编号n到1的计算节点,再将第三组的文件包依次分配到编号1到n的计算节点,依次进行下去,直至所有的文件包分配完毕;将分配好的文件包发送到对应的计算节点。
54.步骤204:计算节点将接收到的文件包存储在本地的存储空间;步骤205:主控节点向所有的计算节点发送计算启动指令;步骤206:计算节点接收到计算启动指令后,将本地存储空间数据调入内存;步骤207:计算节点对数据进行计算;步骤208:计算节点将计算结果保存至内存;步骤209:主控节点从每个计算节点读取计算结果步骤210:主控节点汇总计算结果。
55.实施例3在实施例2中,如果各个计算节点分配的文件包的数据量相同,计算量相同,那么不会产生计算不平衡的问题。但是由于分割后文件包的大小是不相同的,尽管在文件包的分配上采用了尽量均衡的原则,但是分配完成后,各个计算节点的计算量还是不均衡的,这会导致有的计算节点计算时间很长,从而影响整个计算任务的完成时间。为了克服这个问题,如图3所示,本技术实施例提出了一种算力再分配的方法,以1个主控节点和2个计算节点的应用场景为例,包括:步骤301:计算节点1(计算节点2)评估本地节点的已完成计算量和剩余计算量;步骤302:计算节点1(计算节点2)读取动态算力表;所述动态算力表的字段包括:计算节点id,已完成计算量,剩余计算量、剩余计算时间以及算力出让状态,算力出让状态值为1时表示算力可以出让,为0时表示算力不可以出让。
56.步骤303:计算节点1(计算节点2)计算本节点算力数据;当计算节点剩余计算时间小于所有计算节点剩余计算时间平均值的90%,且所有计算节点剩余计算时间平均值与计算节点剩余计算时间的差大于第一阈值,则算力出让状态为1,否则,算力出让状态为0。
57.步骤304:计算节点1(计算节点2)更新动态算力表;步骤305:计算节点1读取主控节点的动态算力表;步骤306:计算节点1判断本地节点剩余计算时间是否大于所有计算节点剩余计算时间的平均值的110%,如果为是,则进入步骤307,否则,转入步骤301;步骤307:计算节点1获取可以委托的计算节点2的id,计算节点2是算力出让状态值为1且预计耗时最小的计算节点;计算节点1向计算节点2发送委托计算请求;步骤308:计算节点2向计算节点1发送同意委托的消息;步骤309:计算节点1向计算节点2发送待计算数据,所述待计算数据为文件包或文件包及指定计算数据段;步骤310:计算节点2对接收到待计算数据进行计算,将计算结果发送至计算节点1;步骤311:计算节点1接收计算节点2发送的计算结果,并与本地计算结果进行汇总。
58.实施例4综合实施例1和实施例2的方法,本技术实施例提出了一种用于gis空间矢量分布式计算的负载均衡方法,应用于包括一个主控节点和多个计算节点的分布式计算系统,如图4所示,该方法包括:步骤401:主控节点将待计算的空间数据文件分割为多个文件包,将所有文件包分配到各个计算节点;步骤402:各计算节点对接收到的文件包进行计算,在计算过程中评估本地节点的算力数据并写入动态算力表;步骤403:各计算节点通过读取动态算力表实现算力委托,或接受其它计算节点的算力委托实现算力出让,直至完成计算。
59.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜