掌桥专利:专业的专利平台
掌桥专利
首页

地图数据的编译方法、装置、计算机设备及存储介质

文献发布时间:2024-04-18 19:58:21


地图数据的编译方法、装置、计算机设备及存储介质

技术领域

本申请涉及地图技术领域,特别涉及一种地图数据的编译方法、装置、计算机设备及存储介质。

背景技术

随着地图技术的发展和车联网技术的进步,越来越多的产品和服务都需要请求地图数据的编译结果,因此地图数据的编译效率是各类应用地图业务为用户提供服务能力的重要基础,地图数据存在数据量大、数据变化频率大、数据处理过程多且复杂、对存储资源和计算资源占用大、对软件环境依赖度高、不易迁移、对编译效率要求高等特点。

目前,在地图数据的编译过程中,通常会将各个编译任务都指定到一个固定的物理机上执行,并在物理机上预先配置编译任务所需的软件环境,但由于不同编译任务之间经常存在上下游依赖关系,比如编译任务B依赖于上一个编译任务A产生的数据,这将要求数据在编译任务A绑定的物理机和编译任务B绑定的物理机中进行传输,导致地图数据的编译流程繁琐冗长、编译效率低。

发明内容

本申请实施例提供了一种地图数据的编译方法、装置、计算机设备及存储介质,能够简化地图数据的编译流程、提升地图数据的编译效率。该技术方案如下:

一方面,提供了一种地图数据的编译方法,该方法包括:

响应于地图业务请求,获取所述地图业务请求关联的至少一个编译任务;

针对所述至少一个编译任务中的任一编译任务,为所述编译任务分配用于处理所述编译任务的计算设备;

向所述计算设备发送所述编译任务的远程执行命令,所述远程执行命令用于指示所述计算设备通过云盘中存储的地图数据执行所述编译任务;

返回至少一个计算设备基于所述远程执行命令执行得到的编译结果。

一方面,提供了一种地图数据的编译装置,该装置包括:

获取模块,用于响应于地图业务请求,获取所述地图业务请求关联的至少一个编译任务;

分配模块,用于针对所述至少一个编译任务中的任一编译任务,为所述编译任务分配用于处理所述编译任务的计算设备;

发送模块,用于向所述计算设备发送所述编译任务的远程执行命令,所述远程执行命令用于指示所述计算设备通过云盘中存储的地图数据执行所述编译任务;

返回模块,用于返回至少一个计算设备基于所述远程执行命令执行得到的编译结果。

在一些实施例中,所述分配模块包括:

确定单元,用于基于编译信息表,确定处理所述编译任务所需的计算资源,所述编译信息表用于记录多个编译任务所需占用的计算资源;

所述确定单元,还用于基于设备信息表,确定计算集群中的多个计算设备各自的空闲资源;

分配单元,用于为所述编译任务分配空闲资源大于所述计算资源的计算设备。

在一些实施例中,在所述编译任务与特定设备具有关联关系的情况下,所述分配单元用于:

若所述特定设备的空闲资源大于所述计算资源,将所述编译任务分配至所述特定设备;

若所述特定设备的空闲资源小于或等于所述计算资源,令所述编译任务进入等待状态。

在一些实施例中,在所述编译任务不与任何特定设备具有关联关系的情况下,所述分配单元包括:

第一分配子单元,用于为所述编译任务分配所述符合第一资源条件的非特定设备;

第二分配子单元,用于在所述计算集群中不存在所述符合第一资源条件的非特定设备的情况下,为所述编译任务分配符合第二资源条件的特定设备;

等待子单元,用于在所述计算集群中不存在所述符合第二资源条件的特定设备的情况下,令所述编译任务进入等待状态。

在一些实施例中,所述第一分配子单元用于:

在所述计算集群中存在空闲的非特定设备的情况下,为所述编译任务分配所述空闲的非特定设备;

在所述计算集群中不存在空闲的非特定设备的情况下,为所述编译任务分配所述空闲资源大于所述计算资源的非特定设备。

在一些实施例中,所述第二分配子单元用于:

为所述编译任务分配空闲的、且与所述编译任务的下游任务具有关联关系的特定设备,所述下游任务为等待所述编译任务执行完毕后才能执行的任务;

在所述计算集群中不存在空闲的、且与所述编译任务的下游任务具有关联关系的特定设备的情况下,为所述编译任务分配所述空闲资源大于所述计算资源、且与所述编译任务的下游任务具有关联关系的特定设备。

在一些实施例中,所述分配模块还包括:

路由单元,用于将所述编译任务路由至与所述地图业务请求的业务类型相匹配的计算集群。

在一些实施例中,所述分配模块还包括:

路由单元,用于在所述编译任务不依赖全局地图数据的情况下,将所述编译任务路由至支持将所述编译任务拆分成多个子任务的计算集群;

所述路由单元,还用于在所述编译任务依赖全局地图数据的情况下,将所述编译任务路由至计算资源符合第三资源条件的计算集群。

在一些实施例中,所述分配模块还包括:

路由单元,用于确定所述编译任务关联的调用接口服务;将所述编译任务路由至与所述调用接口服务所关联的计算集群。

在一些实施例中,所述装置还包括:

阻塞模块,用于在任一计算设备发生故障的情况下,阻塞目标编译任务,所述目标编译任务为向所述发生故障的计算设备分配的编译任务;

标记模块,用于在设备信息表中,将所述发生故障的计算设备标记为非可用状态;

所述分配模块,还用于为所述目标编译任务重新分配处于可用状态的目标计算设备。

在一些实施例中,所述装置还包括:

添加模块,用于在向计算集群中添加第一计算设备的情况下,将所述第一计算设备添加到设备信息表中;

挂载模块,用于在所述第一计算设备上挂载所述云盘;

设置模块,用于为所述第一计算设备设置编译任务所依赖的环境变量。

在一些实施例中,用于处理任一地图业务请求的编译任务的计算设备均挂载至所述云盘,所述云盘是指由多个存储设备构成的存储集群,所述存储集群用于存储编译任务所需的地图数据。

一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述地图数据的编译方法。

一方面,提供了一种存储介质,该存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述地图数据的编译方法。

一方面,提供一种计算机程序产品,所述计算机程序产品包括至少一条计算机程序,所述至少一条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取所述至少一条计算机程序,所述一个或多个处理器执行所述至少一条计算机程序,使得计算机设备能够执行上述地图数据的编译方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过对地图业务请求的编译任务,根据系统内负载请求动态实时分配计算设备,并通过远程执行命令来触发计算设备启动编译任务,由于计算设备挂载到云盘中,从而能够读写云盘中的地图数据以实现远程编译,由于每个编译任务绑定的计算设备都能够通过挂载到云盘来读写云盘中的地图数据,避免了在编译任务与物理机绑定的情况下需要在上下游任务的物理机之间进行数据拷贝,简化了地图数据的编译流程,极大提升了地图数据的编译效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。

图1是本申请实施例提供的一种地图数据的编译方法的实施环境示意图;

图2是本申请实施例提供的一种地图数据的编译方法的流程图;

图3是本申请实施例提供的一种地图数据的编译方法的流程图;

图4是本申请实施例提供的一种调度决策服务的计算设备筛选原理示意图;

图5是本申请实施例提供的一种调度决策策略的原理性示意图;

图6是本申请实施例提供的一种云盘数据存储软链接的结构示意图;

图7是本申请实施例提供的一种地图数据的编译方法的原理性流程图;

图8是本申请实施例提供的一种地图数据的编译装置的结构示意图;

图9是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。

本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。

本申请中术语“包括A或B中至少一项”涉及如下几种情况:仅包括A,仅包括B,以及包括A和B两者。

本申请中涉及到的用户相关的信息(包括但不限于用户的设备信息、个人信息、行为信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,当以本申请实施例的方法运用到具体产品或技术中时,均为经过用户许可、同意、授权或者经过各方充分授权的,且相关信息、数据以及信号的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的地图业务的相关数据都是在充分授权的情况下获取的。

在介绍本申请实施例之前,需要引入一些云技术领域内的基本概念。

云技术(Cloud Technology):是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也即是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成云技术领域的重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,均能通过云计算来实现。

云存储(Cloud Storage):是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。

目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。

存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。

云计算(Cloud Computing):云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。

作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS,即Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。

按照逻辑功能划分,在IaaS层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、Web(网页)容器等。SaaS为各式各样的业务软件,如Web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。

云原生:云原生是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps(Development和Operations的组合词,过程、方法与系统的统称)等技术为基础建立的一套云技术产品体系。在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。云原生技术为存算分离提供了可靠的底层技术保障。

以下,对本申请实施例的术语进行解释说明。

智能交通系统(Intelligent Traffic System,ITS):又称智能运输系统(Intelligent Transportation System),是将先进的科学技术(信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输系统。本申请实施例涉及的地图数据的编译任务,可应用于上述ITS系统。

存算分离:即存储和计算分离,在业务处理系统中,涉及到计算和存储两个过程,存储过程是指存储需要持久化的业务相关数据,计算过程是指利用CPU(CentralProcessing Unit,中央处理器)和内存等资源来参与业务计算。目前,存储和计算资源往往共同组成一台机器来对外提供服务,比如一台物理机对外提供计算资源和存储资源,在进行资源扩充时也都是以机器为单位扩充,会造成资源浪费,而存算分离技术使得存储和计算资源不需要耦合绑定在一起,两者可以独立管理、弹性扩展,按需分配。

地图数据编译:是指整合各种渠道来源的数据,经过多重加工,生产出地图线上服务需要的数据形式的过程,包括底图、导航、公交、路况等子业务的数据编译。地图数据的编译过程是地图业务为用户提供服务能力的重要基础,主要有如下几个特点:数据量非常大、数据的变化频率大、数据处理过程往往多且复杂、对存储和计算资源的占用很大、对软件环境的依赖度高、不易迁移、对编译效率的要求也很高,这些特点也正是地图业务与其他业务最大的不同点。由于地图数据的编译过程直接影响着地图业务各个环节的技术方案选择和服务能力的优劣,地图业务可以说是一个非常典型的既重数据又重计算型的业务,数据编译过程会面临大数据量的加载、输出、网络吞吐和搬迁。

流程调度:从计算机技术角度解释,流程是多种业务对象在一起合作完成某件事情的步骤,将步骤按照一定顺序和规则有序地编排起来完成任务就是流程调度。对于地图数据编译的过程来说,流程调度需要把复杂的编译步骤按照依赖关系、资源占用情况、软件环境要求、执行效率等规则,组织起来,自动化、快速高效地编译出结果数据。

共享存储系统:可以挂载到不同机器上实现共享的数据持久化存储系统,能够提供充足的存储空间,常见的产品包括Ceph(一种分布式文件系统)、TopoLVM(一种用于本地存储的新容器存储接口插件)、CBS(Cloud Backup Service,云备份服务)等。

计算集群:由一组计算节点(即计算设备)组成的,能够调度起来共同完成计算任务的系统。

随着地图技术的发展和车联网技术的进步,越来越多的产品和服务都需要请求地图数据的编译结果,因此地图数据的编译效率是各类应用地图业务为用户提供服务能力的重要基础,地图数据存在数据量大、数据变化频率大、数据处理过程多且复杂、对存储资源和计算资源占用大、对软件环境依赖度高、不易迁移、对编译效率要求高等特点。

目前,在地图数据的编译过程中,通常采用基于大核心、大存储的物理机结合流程引擎的搭建方案,这一方案的主要特点是:将每个编译任务都指定到一个固定的物理机上执行,并在物理机上预先配置编译任务所需的软件环境,不轻易改变物理机的服务器环境。比如,将地图数据编译的各个编译任务(相当于编译步骤),根据资源占用、软件依赖环境等情况,事先分配到指定的物理机上,并将各个编译任务依赖的软件环境也预先安装到不同的物理上,在启动编译流程时,流程引擎根据各个编译任务预先绑定的IP(InternetProtocol,网际互连协议)和路径,通过远程执行命令来启动物理机上编译任务的执行。

由于每个编译任务的资源占用、软件的依赖要求都不尽相同,因此事先必须准备好环境合适、资源充足的物理机才行,在这种情况下,每台物理机都有独立的计算和存储资源,不同物理机之间并不存在资源共享,总体编译流程繁琐冗长、编译效率较低。

进一步的,由于不同编译任务之间经常存在上下游依赖关系,会导致上下游的编译任务需要在各自绑定的物理机之间相互拷贝数据,比如编译任务B依赖于上一个编译任务A产生的数据,这将要求数据在编译任务A绑定的物理机和编译任务B绑定的物理机中进行传输,而地图业务的数据量本来就比较大,拷贝的时间自然也比较长,对整体编译流程会带来较大影响。此外,本就复杂的编译流程,由于还掺杂大量数据拷贝的环节,这使得整体编译流程变得更加复杂、难以维护。

进一步的,由于很多编译任务需要占用很大资源(如CPU或内存),或者依赖于特定软件环境,如GCC(GNU Compiler Collection,GNU编译器套件)版本、TensorFlow(张量流)等,导致编译任务和物理机绑定,只能在其绑定的物理机上面执行,一旦绑定的物理机出现故障(如网络不通、机器宕机等),与故障的物理机绑定的编译任务就会中止,整个编译流程也会被阻塞,无论更换物理机还是等待物理机恢复都需要很长时间,因此可用性不高、稳定性不好。

进一步的,在编译任务存在上下游依赖关系的情况下,不同机器之间需要相互传输数据,一旦编译流程需要发生调整,如新增或删除某个编译任务、依赖关系变更等,都需要人工确认依赖关系,增加或调整数据传输的步骤,一旦梳理出错,就会导致编译流程出现问题。此外,一旦某台机器不可用,需要更换掉故障的机器,这时还需要人工修改流程引擎的配置,并对更换后的机器重新部署依赖的软件环境,部署完毕后还需要整体进行测试,这些人工确认、修改、部署、测试等工作都会占用很大时间成本和人力成本,因此维护成本高。

进一步的,在需要进行环境迁移时,比如某些项目需要编译同样的地图数据,则需要重新复制一套编译环境,或者搭建一套一模一样的测试流程,就需要投入新的机器资源、重新安装依赖环境、根据机器数量和依赖关系重新分配机器等一系列操作,环境迁移的部署成本高、流程麻烦繁琐、机器和人力成本都很高。

进一步的,在需要新增机器或者计算资源时,则需要调整流程调度分配,还要增加其上下游任务的数据传输的过程,并进行软件环境的安装配置等,使得机器或计算资源的增加很不灵活,任何新增或减少机器或计算资源的操作,都需要调整流程调度分配、安装软件环境、调整数据拷贝步骤等繁琐工作,因此扩展性较差。

进一步的,由于存在繁琐的数据传输和固定机器分配的机制,导致很多内部原本能够并行执行的编译任务只能串行执行,不能充分利用空闲的计算资源,并且,由于物理机是计算资源和存储资源捆绑的,如果要扩充计算资源,就势必会顺带增加存储资源,而通常都是计算资源不足、存储资源充足,这会造成存储资源浪费、资源利用率低。

有鉴于此,本申请实施例提供一种利用云原生的存算分离技术,搭建地图数据编译流程或平台的方案,能够提高地图数据编译过程的执行效率、提高系统内的资源利用率以及系统的可伸缩性,方案细节将在后续各个实施例中进行详细说明。

以下,对本申请实施例的存算分离架构进行说明。

图1是本申请实施例提供的一种地图数据的编译方法的实施环境示意图。参见图1,示出了一种基于云原生的编译基础环境架构,涉及到多个计算集群110和共享的存储集群120。

每个计算集群110都由一组计算设备111(即计算节点)构成,其中,计算设备111也称为云主机(Cloud Virtual Machine,CVM)。计算集群111中的各个计算设备111能够调度起来共同完成计算任务,如计算任务包括地图业务的各类计算任务,计算集群111中的各个计算设备111并不需要都是高配置的计算资源,可以在不同计算设备111上高低搭配不同配置的计算资源,以适应不同CPU和内存要求的编译任务。

在地图数据的编译流程中,会根据编译任务所需要占用的计算资源(如内存资源)来选择CPU和内存的配置合适的虚拟主机,相当于为每个编译任务动态分配一个配置合适的计算设备111。

在一些实施例中,在划分计算集群110时,可以将计算设备111按照不同的应用或者项目(即业务类型)来组成不同的计算集群110,例如,对地图数据的编译任务来说,按照请求所属的业务类型,可以划分为正式编译集群、测试编译集群和其他项目集群。

其中,正式编译集群主要用来生产能够直接上线的编译数据,即正式编译集群产生的编译结果将会直接上线到正式的地图产品或应用到基于地图的服务的产品中,这些编译结果可以全量上线到产品或者增量上线到产品。

其中,测试编译集群则主要用来对新数据、新工具或新流程进行测试验证,但测试结果并不会上线到产品,而是在测试通过后转到正式编译集群才会彻底上线,由于测试过程对编译效率的要求不高,因此测试编译集群可以并行运行多个测试任务,由流程引擎来调度并控制测试编译集群中各个计算设备的资源占用。

其中,其他项目集群则用于给其他需要进行地图数据编译工作的应用独立提供编译环境,可选地,不同项目或应用共享同一个其他项目集群,或者,针对不同项目或不同应用配置不同的其他项目集群,本申请实施例对此不进行具体限定。

需要说明的是,由于不同的计算集群110之间不存在共用的主机,因此不同计算集群110之间是相互隔离的,不会产生由于主机共用而相互影响的问题。

在一些实施例中,按照常用于请求地图业务的服务器部署的地理分布特点,来选择计算集群110的部署地域,比如,在地图应用、导航应用的业务服务器部署在城市A、B、C三地的情况下,为了将编译结果尽快地传输到业务服务器,可以将用于进行地图数据编译的计算集群110部署在城市A、B、C三地中间的城市,如城市E或F等,使得城市E或F中部署的计算集群110获取到地图数据的编译结果后,尽快传输到城市A、B、C,使得编译结果的传输效率尽可能高。

在一些实施例中,每个计算集群110中的每个计算设备111都会挂载到共享的存储集群120上,相当于将每个CVM挂载到同一CBS(Cloud Backup Service,云备份服务)上,使得不同计算集群110中的不同计算设备111能够挂载到存储集群120中共享的云存储目录。

由于每个计算设备111都挂载了存储集群120的云存储目录,就实现了存储集群120中所存储的数据共享,即计算集群110内部的所有计算设备111都在同一个云盘读写,编译过程中不需要频繁地传输或拷贝数据,并且数据、工具或依赖的软件环境只需要在存储集群120中准备一次就好。

共享的存储集群120是指可以挂载到不同计算设备111上实现共享的数据持久化存储系统,能够提供充足的存储空间,换言之,存储集群120对外提供共享存储系统的功能。存储集群120中安装和部署有编译任务所依赖的软件环境,这样计算设备111通过挂载云盘和设置环境变量,使得所有计算设备111能够远程调用并执行编译,极大降低了环境部署和迁移的难度,且部署操作完全自动化,为实现自动扩容提供了基础,这一部署操作可视为计算设备的初始化操作,任一新的计算设备在加入到计算集群时,都可以通过一个自动化的脚本来进行初始化,能够快速在计算集群中添加新的计算设备,以实现计算集群的自动化扩容,且新增的计算设备能够快速投入并参与到编译任务中。

由于存储集群120具有空间充足的共享存储云盘,因此可以存储多个版本的数据和工具,能够方便地实现编译任务的快速更新或回滚操作,云盘的共享特性不仅能够减少数据在机器之间的传输,还能够利用同盘的优势,以软链接的方式来减少数据的本地拷贝,以进一步提升编译任务的执行效率,优化存储空间的资源利用率。

上述计算集群110或存储集群120,对外可被提供为计算服务器或存储服务器,服务器可以是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。

在存算分离的系统架构下,计算集群110拥有足够的计算资源,而存储集群120(也称为云存储、云盘)则专门用来存储海量的地图数据和/或编译数据,计算集群110和存储集群120是分开部署和管理的,因此实现了存算分离(即存储-计算分离)。本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。

由于所有计算集群110中的所有计算设备111都挂载了共享的存储集群120上,只需要在存储集群120中预先配置好数据和软件环境,就能够在不同计算设备111间实现共享。比如,将编译过程中的所有输入数据源、结果数据都存放到共享的存储集群120中,所有计算设备111在执行编译任务时都无需相互传输或拷贝数据,极大节约了编译过程的时间成本。又比如,将编译依赖的软件环境、应用(如可执行程序)都部署到共享的存储集群120中,只需要挂载到云盘并进行环境变量设置,就能够实现编译环境的部署和迁移,即操作便捷又能够自动化实现。

由于云上计算资源充足,能够快速对已有计算集群110进行扩容(如在集群内新增计算设备),或者新增一个计算集群110,能够实现数据编译的计算资源集群化。在此基础上,通过合理的流程调度,一方面能够最大程度地利用集群内部的计算资源,提高编译任务的并行度,从而提升地图数据的编译效率,另一方面还能够动态分配执行编译任务的计算设备,避免由于单个计算设备故障而阻塞整体流程,同时还能够自动化地伸缩扩容计算设备,无需停止编译流程也无需人工干预,从而实现灵活智能的自动化调度机制。

需要说明的是,在计算集群110和存储集群120之前,系统内还可以配置有流程调度设备,流程调度设备用于接收终端(即客户端侧)的地图业务请求,并对基于该地图业务请求解析得到的一系列编译任务动态分配计算设备,动态分配和流程调度过程将在后续实施例中详细说明。

在一些实施例中,上述发起地图业务请求的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电、车载终端、飞行器等,但并不局限于此。终端以及流程调度设备能够通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

图2是本申请实施例提供的一种地图数据的编译方法的流程图。参见图2,该实施例由计算机设备执行,以计算机设备是上述实施环境中的流程调度设备为例进行说明,该实施例包括下述步骤:

201、流程调度设备响应于地图业务请求,获取该地图业务请求关联的至少一个编译任务。

流程调度设备是设置于存算分离的地图编译系统之前的、用于处理终端侧的客户端发送的地图业务请求的计算机设备。流程调度设备可以是独立的设备,或者与任一计算集群中任一计算设备集成在同一物理机上,或者与网关或代理设备集成在同一物理机上,本申请实施例对此不进行具体限定。

在一些实施例中,地图业务请求是终端上的客户端发送给流程调度设备的,客户端是所有地图行业中能够提供基础服务能力的任一产品,如手机地图、车载导航系统、网约车平台、物流系统等,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。

在一些实施例中,地图业务请求是终端上的客户端发送给业务服务器、业务服务器再转发给流程调度设备的,该地图业务请求可以是位置查询请求、导航请求、物流查询请求、路径预览请求等,这些类型的请求都至少需要获取对地图数据的编译结果。

在一些实施例中,流程调度设备接收到任一请求后,解析该请求的头字段,当该头字段指示该请求为地图业务请求(如头字段携带地图业务标识)时,解析该地图业务请求的数据字段,得到该地图业务请求的业务请求语句。

在一些实施例中,流程调度设备上配置有流程引擎、远程执行工具和调度决策服务三个模块,可选地,将解析得到的业务请求语句发送到流程引擎,通过流程引擎来对该业务请求语句进行分析,以获取得到至少一个编译任务。

202、流程调度设备针对该至少一个编译任务中的任一编译任务,为该编译任务分配用于处理该编译任务的计算设备。

在一些实施例中,对于不存在上下游依赖关系的各个编译任务,这些编译任务能够并行执行,以最大化提升编译效率,因此流程调度设备可以一次性唤醒这些能够并行执行的所有编译任务,接着,向调度决策服务发送调度分配请求,以请求调度决策服务能够为上述每个编译任务动态实时分配一个合适的计算设备。

在一些实施例中,由于编译任务之间可能会存在上下游依赖关系,这些编译任务是不能够并行执行的,流程调度设备依次执行这些具有上下游依赖关系的编译任务,对任一编译任务,流程引擎在确定该编译任务的上游任务执行完毕后,唤醒该编译任务的执行进程,接着向调度决策服务发送调度分配请求,该调度分配请求用于请求调度决策服务为当前被唤醒的该编译任务动态实时分配一个合适的计算设备。

在一些实施例中,调度决策服务优先为该编译任务分配一个空闲的计算设备,空闲的计算设备是指目前没有被任何任务所占用的计算设备,空闲的计算设备上的所有计算资源都是可用计算资源,这样能够使得计算集群内部尽可能地负载均衡。

在一些实施例中,调度决策服务优先为该编译任务分配一个空闲资源大于处理该编译任务所需的计算资源的计算设备,即,只需要保证分配到的计算设备具有充足的空闲资源来处理该编译任务即可,这样能够保证编译任务不会由于计算资源不足而发生中止。

在一些实施例中,若编译任务需要占用很多计算资源,而计算集群内部仅有个别计算设备能够提供这些计算资源,相当于编译任务与特定设备绑定,只能在特定设备上面执行,那么可以优先为该编译任务分配一个空闲的特定设备,或者,优先为该编译任务分配一个空闲资源大于处理该编译任务所需的计算资源的特定设备,关于不同情况下的调度分配策略将在下一实施例中详细说明,这里不做赘述。

由于在存算分离的系统架构下,每个计算设备都挂载到了共享的存储集群(即云盘)上,且云上的计算资源是充足的,因此在为编译任务分配计算设备的时候,不存在编译任务只能绑定在某个物理机上执行的约束,流程调度设备能够实时根据计算集群内部各个计算设备的负载请求,为编译任务分配一个目前最合适的计算设备,保证计算设备上有足够的空闲资源来处理该编译任务,且能够实现计算集群的动态负载均衡,能够提升计算集群内的资源利用率。

203、流程调度设备向该计算设备发送该编译任务的远程执行命令,该远程执行命令用于指示该计算设备通过云盘中存储的地图数据执行该编译任务。

在一些实施例中,流程调度设备为该编译任务分配完毕计算设备之后,流程调度设备通过远程执行工具向分配得到的计算设备发送远程执行命令,以使得计算设备在接收到该远程执行命令后,在挂载云盘的云存储目录中,确定该编译任务所涉及操作的地图数据,并通过对确定得到的地图数据进行远程编译,以执行该编译任务,在该编译任务执行完毕后,计算设备向流程调度设备返回该编译任务的执行状态,该执行状态用于指示编译任务是执行成功还是执行失败。

在一些实施例中,流程调度设备对依次唤醒的每个编译任务都执行上述步骤202-203,需要说明的是,对于一些不存在上下游依赖关系的编译任务,流程调度设备可以并行地唤醒这些编译任务,即同时为多个不存在上下游依赖关系的编译任务分配多个计算设备,并同时向多个计算设备发送远程执行命令,本申请实施例对此不进行具体限定。

204、流程调度设备返回至少一个计算设备基于该远程执行命令执行得到的编译结果。

在一些实施例中,流程调度设备在向每个编译任务分配得到的计算设备发送远程执行命令之后,获取计算设备在基于该远程执行命令执行该编译任务后得到的执行状态,如果执行状态为执行成功,继续唤醒该编译任务的下游任务,如果执行状态为执行失败,则需要重新为编译任务分配一个新的计算设备,以在新的计算设备上再次执行该编译任务,重复上述操作直到所有的编译任务的执行状态都指示执行成功,此时代表了所有编译任务都已经执行成功,云盘上将会产生一个该至少一个编译任务都顺次执行完毕后的编译结果,流程调度设备可以从云盘中读取到该编译结果,并将该编译结果返回给发送该地图业务请求的设备,例如,地图业务请求是终端上的客户端直接发送到流程调度设备的,流程调度设备将编译结果返回给客户端,又例如,地图业务请求是业务服务器转发到流程调度设备的,流程调度设备将编译结果返回给业务服务器,由业务服务器对编译结果进行加工处理或整合其他数据后再返回给客户端,本申请实施例对此不进行具体限定。

上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。

本申请实施例提供的方法,通过对地图业务请求的编译任务,根据系统内负载请求动态实时分配计算设备,并通过远程执行命令来触发计算设备启动编译任务,由于计算设备挂载到云盘中,从而能够读写云盘中的地图数据以实现远程编译,由于每个编译任务绑定的计算设备都能够通过挂载到云盘来读写云盘中的地图数据,避免了在编译任务与物理机绑定的情况下需要在上下游任务的物理机之间进行数据拷贝,简化了地图数据的编译流程,极大提升了地图数据的编译效率。

图3是本申请实施例提供的一种地图数据的编译方法的流程图。参见图3,该实施例由计算机设备执行,以计算机设备是上述实施环境中的流程调度设备为例进行说明,该实施例包括下述步骤:

301、流程调度设备响应于地图业务请求,获取该地图业务请求关联的至少一个编译任务。

上述步骤301与上述步骤201类似,这里不做赘述。

在本申请实施例中,以流程调度设备上配置有流程引擎、远程执行工具和调度决策服务三个模块为例进行说明,上述三个模块共同作用能够构成编译任务的调度系统。地图业务请求关联着一个整体的编译流程,编译流程包括至少一个编译任务,每个编译任务都相当于编译流程中的一个编译步骤。

流程引擎用于对给定的地图业务请求,解析拆分得到至少一个编译任务,编译流程的执行依赖于流程引擎的调度,对于可并行执行的编译任务,流程引擎可同时为其分配计算设备并启动执行,对于不可并行执行的编译任务,通常具有上下游的依赖关系,流程引擎会根据编译任务之间的先后顺序(即依赖关系)来依次执行。

每个编译任务都可以通过一个可以触发远程执行命令的工具:编译器Operator来进行启动,流程引擎唤醒某个编译任务后,将编译任务下发给编译器Operator,编译器Operator会向调度决策服务申请分配一个计算设备,并向该计算设备来发送该编译任务的远程执行命令。

调度决策服务则用于动态地向流程引擎的编译器Operator返回为每个编译任务分配的计算设备的IP地址,实现计算资源的统一调度分配。通常,调度决策服务根据计算集群的状态和使用情况,在编译任务执行过程中,将合适的计算设备动态地分配给每个编译任务,同时动态识别计算设备的可用性,及时发现到故障的计算设备,以便随时将原本分配到故障计算设备的编译任务重新分配到新的健康的计算设备上重新执行,保证整个计算集群的高可用性。

302、针对该至少一个编译任务中的任一编译任务,流程调度设备基于编译信息表,确定处理该编译任务所需的计算资源,该编译信息表用于记录多个编译任务所需占用的计算资源。

在一些实施例中,流程调度设备从该至少一个编译任务中,确定不存在上下游依赖关系的各个编译任务,这些编译任务是能够并行执行的编译任务,可以一次性唤醒上述各个编译任务,通过步骤302-305来并行化地为每个编译任务分配用于处理该编译任务的计算设备。

在一些实施例中,流程调度设备从该至少一个编译任务中,确定存在上下游依赖关系的各个编译任务,由于这些编译任务中的最上游任务可以随着能够并行执行的编译任务一起唤醒,对于其余的编译任务,需要等待其上游任务执行完毕才能够唤醒。

在一些实施例中,对任一被唤醒的编译任务,流程调度设备查询预先配置完毕的编译信息表,该编译信息表中记录了多个编译任务各自所需占用的计算资源,例如,在编译信息表中,将编译任务的任务标识和所需占用的计算资源进行关联存储,在这种情况下,以编译任务的任务标识为索引,查询与该索引关联存储的索引内容,即可得到当前被唤醒的编译任务所需占用的计算资源。

示意性地,在编译信息表(Module_Info)中,对每个编译任务都建立一个数据行,在数据行中配置下述字段:任务标识(Identification,ID)、任务中文名称、任务英文名称、任务所需CPU、任务所需内存、超时参数、固定IP、上游任务ID、通知人等,其中,超时参数是指该编译任务最大会等待多久才会被视为等待超时,固定IP用于记录该编译任务是否配置了特定设备来执行,如果固定IP为空,代表编译任务并未指定在某些特定设备上执行,上游任务ID是指在具有上下游任务的依赖关系时该编译任务的上游任务,通知人是指在编译任务发生异常时需要通知哪位技术人员的管理账号。如表1所示,示出了一种可能的编译信息表的构成方式。

表1

可以看出,路网编译任务的任务ID为1,其上游任务是ID为0的编译任务(表中未示出),路网编译任务所需CPU至少为4GB,所需内存至少30GB,在等待超过30分钟时视为等待超时,且并未指定特定设备,而诱导编译任务则是路网编译任务的下游任务,诱导编译任务的任务ID为2,诱导编译任务所需CPU至少为5GB,所需内存至少为40GB,在等待超过1小时时视为等待超时,且指定了要在特定设备GUIDE_IP上执行。

303、流程调度设备将该编译任务路由至与该地图业务请求的业务类型相匹配的计算集群。

其中,业务类型是指地图业务请求所属是正式业务、测试业务还是其他项目业务。

在一些实施例中,在存算分离系统架构下,配置有正式编译集群、测试编译集群和其他项目集群。其中,正式编译集群主要用来生产能够直接上线的编译数据,即正式编译集群产生的编译结果将会直接上线到正式的地图产品或应用到基于地图的服务的产品中,这些编译结果可以全量上线到产品或者增量上线到产品。其中,测试编译集群则主要用来对新数据、新工具或新流程进行测试验证,但测试结果并不会上线到产品,而是在测试通过后转到正式编译集群才会彻底上线,由于测试过程对编译效率的要求不高,因此测试编译集群可以并行运行多个测试任务,由流程引擎来调度并控制测试编译集群中各个计算设备的资源占用。其中,其他项目集群则用于给其他需要进行地图数据编译工作的应用独立提供编译环境,可选地,不同项目或应用共享同一个其他项目集群,或者,针对不同项目或不同应用配置不同的其他项目集群,本申请实施例对此不进行具体限定。

在一些实施例中,流程调度设备解析该地图业务请求,根据该地图业务请求中携带的业务标识,能够确定出该业务标识所属的业务类型,接着,将地图业务请求路由到与该业务类型相匹配的计算集群。例如,地图业务请求中携带的业务标识是测试业务标识,则将地图业务请求路由到与测试业务标识相匹配的测试编译集群,又例如,地图业务请求中携带的业务标识是正式业务标识,则将地图业务请求路由到与正式业务标识相匹配的正式编译集群。

在上述步骤303中,仅示出了划分了多个计算集群的情况下,如何按照业务类型,将地图业务请求正确路由到合适的计算集群,以实现计算集群的资源配置优化,在一些实施例中,假设在系统架构下没有划分多个计算集群,即仅提供了一个计算集群,那么则无需执行上述步骤303。

在另一些实施例中,除了按照业务类型来划分计算集群之外,还可以按照所提供计算资源的多少来划分计算集群,比如,将计算集群划分成计算资源配置较高的计算集群和计算资源配置较低的计算集群。

针对计算资源配置较低的计算集群,可以用于处理一些不依赖全局地图数据的编译任务所拆分得到的子任务,换言之,正是由于这些编译任务不依赖于全局地图数据,因此可以将全局地图数据拆解成多个地图块,从而将一个或多个地图块打包成一个子任务,能够将一个耗时较久、耗费资源较多的编译任务,拆解成能够并行在多个计算设备上分别执行的多个子任务,以提升对此类编译任务的编译效率。即,对任一编译任务,在该编译任务不依赖全局地图数据的情况下,将该编译任务路由至支持将该编译任务拆分成多个子任务的计算集群(即计算资源配置较低的计算集群)。

针对计算资源配置较高的计算集群,可以用于处理一些依赖全局地图数据的编译任务,这些编译任务由于需要依赖全局地图数据才能够执行,如选择导航路径这类导航业务,可以直接路由到计算资源配置较高的计算集群中,计算资源配置较高的计算集群中通常会包含大内存的计算设备,从而能够快速且高效地处理依赖全局地图数据的编译任务,即,对任一编译任务,在该编译任务依赖全局地图数据的情况下,将该编译任务路由至计算资源符合第三资源条件的计算集群,该第三资源条件是指计算资源大于目标阈值,或者,该第三资源条件是指计算集群中配置最低计算设备所能够提供的计算资源超过该编译任务所需占用的计算资源,本申请实施例对第三资源条件不进行具体限定。

通过这类按照数据范围来拆分任务,从而将不同编译任务路由到计算资源配置不同的计算集群,能够实现计算资源的动态调度,为每个编译任务分配到计算资源合适的计算集群,能够进一步提升存算分离系统下的资源利用率。

在另一些实施例中,除了按照业务类型来划分计算集群,或者按照所提供计算资源的多少来划分计算集群之外,还可以按照编译任务来划分计算集群,换言之,对每个编译任务,都将该编译任务所需执行的操作封装成一个异步调用的调用接口服务,如该调用接口服务是API(Application Programming Interface,应用程序编程接口),每个调用接口服务都与一个计算集群相关联,该计算集群中包含一个或多个计算设备,流程调度设备在接收到地图业务请求后,解析得到至少一个编译任务,对每个编译任务,都能够确定出与该编译任务关联的调用接口服务,接着,将该编译任务路由至与该调用接口服务所关联的计算集群。在上述过程中,在解析完毕至少一个编译任务之后,将每个编译任务都通过调用接口服务路由到一个专门的小型计算集群,这样无需区分业务类型是正式业务、测试业务还是其他项目业务,所有业务类型下的编译任务都会异步调用该API,从而路由到关联的计算集群上来执行该编译任务,这样使得计算集群的划分粒度更加精细。

304、流程调度设备基于设备信息表,确定该计算集群中的多个计算设备各自的空闲资源。

在一些实施例中,在通过上述步骤303确定了要将该编译任务路由到哪个计算集群之后,流程调度设备可以查询设备信息表,在设备信息表中记录了每个计算集群中的每个计算设备是否可用,或者,在设备信息表中还记录每个计算集群中的每个计算设备中剩余多少资源可用,本申请实施例对此不进行具体限定。

在一些实施例中,流程调度设备为每个计算集群单独维护一张设备信息表,该设备信息表中用于记录该计算集群中各个计算设备的相关信息,比如,相关信息包括设备IP、设备登录信息、CPU、内存、所属计算集群、CBS挂载目录、专用标识、是否可用、剩余空闲资源等。在另一些实施例中,流程调度设备将所有计算集群的所有计算设备都维护在一张总的设备信息表中,本申请实施例不对是否为每个计算集群单独维护设备信息表进行具体限定。

在一些实施例中,对每个计算集群中的每个计算设备,能够直接从设备信息表中查询得到该计算设备的空闲资源,即在设备信息表中设置一列用于记录每个计算设备的空闲资源的字段,从而能够快速查询到每个计算设备的空闲资源,提高空闲资源的获取效率。

在另一些实施例中,对每个计算集群中的每个计算设备,从设备信息表中查询得到该计算设备最大所能够提供的计算资源以及当前已分配给该计算设备的各个编译任务的任务标识,接着查询编译信息表得到每个编译任务所需占用的计算资源,将已分配给该计算设备的各个编译任务所需占用的计算资源相加,得到该计算设备的已占用资源,将该计算设备最大所能够提供的计算资源与该已占用资源之间的差值确定为该计算设备的空闲资源,这样无需在设备信息表中新增空闲资源字段,能够节约设备信息表所占用的存储开销。

示意性地,在设备信息表(Node_Info)中,对每个编译任务都建立一个数据行,在数据行中配置下述字段:设备IP、设备登录信息、CPU、内存、所属计算集群、CBS挂载目录、专用标识、是否可用、当前负载数、剩余空闲资源等,其中,设备IP是指计算设备的IP地址,登录信息是指目前登录该计算设备的账号信息,CPU和内存代表了计算设备最大能提供多少计算资源,所属计算集群代表了计算设备目前属于哪个计算集群中,CBS挂载目录代表计算设备当前挂载到了云盘的哪个云存储目录下,专用标识代表计算设备是否专用于处理某个特定的编译任务,专用标识不为空时代表计算设备是专用于处理某个编译任务的特定设备,专用标识为空时代表计算设备不是特定设备,是否可用代表了计算设备当前是否可用(相当于指示计算设备是否发生故障),当前负载数代表了计算设备上目前承担了多少用户负载,可视为计算设备上正在处理以及还未处理的编译任务数量,而剩余空闲资源则代表了计算设备上当前剩余多少空闲资源。如表2所示,示出了一种可能的设备信息表的构成方式。

表2

可用看出,表2代表的是设备信息表在初始化阶段可以具备哪些数据列,在初始化阶段由于每个计算设备都没有被分配到编译任务,因此空闲资源就等于了CPU和内存字段最大所能提供的计算资源,随着编译流程的进行,假设在某一时刻,将某个ID为1的编译任务分配到了表2中IP为0.0.0.1的计算设备,可以在最右侧增加一个字段,用于记录该计算设备正在被哪个编译任务所占用,例如增加字段为“活跃负载”,在“活跃负载”字段中记录编译任务的ID“1”,代表计算设备目前正在被ID为1的编译任务占用,假设ID为1的编译任务需要占用4GB的CPU、30GB的内存,那么显然将计算设备的CPU减去被编译任务占用的CPU,并将计算设备的内存减去被编译任务占用的内存,可以得到剩余的空闲资源包括60GB的CPU和226GB的内存,空闲资源可用作为单独一列添加到设备信息表中,可以空闲资源是基于设备信息表中计算设备所能提供的计算资源减去被已分配的编译任务占用的计算资源所得的数值,本申请实施例对空闲资源的来源不进行具体限定。

305、流程调度设备为该编译任务分配空闲资源大于该计算资源的计算设备。

在一些实施例中,由于某些编译任务可能由于占用内存资源很大、或者对操作系统版本有特殊要求,导致必须在特定设备上面执行,此时这些编译任务会与特定设备建立关联关系,并且这些编译任务只会分配到具有关联关系的特定设备上面执行,也不会被动态分配到其他的非特定设备上面。比如在编译信息表中编译任务的“固定IP”字段中记录了具有关联关系的特定设备的IP地址,因此,对当前被唤醒的任一编译任务,通过查询编译信息表,能够得知该编译任务是否具有关联的特定设备,例如,查询编译信息表中该编译任务所在数据行的“固定IP”字段,如果“固定IP”字段为空,代表编译任务不与任何特定设备具有关联关系,如果“固定IP”字段不为空,代表编译任务与该字段所记录IP地址指示的特定设备具有关联关系。下面,将针对与特定设备关联和不与特定设备关联两种情况分别进行讨论。

在一些实施例中,在该编译任务与特定设备具有关联关系的情况下,由于特定设备也是计算设备的一种示例,因此通过上述步骤304能够获取到特定设备的空闲资源。可选地,比较特定设备的空闲资源和编译任务所需占用的计算资源,若该特定设备的空闲资源大于该编译任务所需占用的计算资源,代表特定设备具有充足资源来处理该编译任务,可以将该编译任务分配至该特定设备;若该特定设备的空闲资源小于或等于该编译任务所需占用的计算资源,代表特定设备不具有充足资源来处理该编译任务,可以令该编译任务进入等待状态,等待状态是指目前计算集群中没有合适的特定设备能够处理该编译任务,只能等待特定设备处理完毕正在执行的任务,释放掉原本被占用的计算资源之后再处理该编译任务,需要说明的是,编译任务不会处于无休止的等待中,在等待时长超过编译信息表中的超时参数后,流程调度设备直接确定该编译任务执行失败。

在一些实施例中,在该编译任务不与任何特定设备具有关联关系的情况下,此时可以优先考虑为编译任务分配具有充足资源的非特定设备,即,为该编译任务分配该符合第一资源条件的非特定设备;在该计算集群中不存在该符合第一资源条件的非特定设备的情况下,此时可以考虑为该编译任务分配具有充足资源的特定设备,即,为该编译任务分配符合第二资源条件的特定设备;在该计算集群中不存在该符合第二资源条件的特定设备的情况下,说明目前特定设备和非特定设备都没有充足资源来处理该编译任务,则可以令该编译任务进入等待状态,等待状态与上一情况类似,这里不做赘述。其中,非特定设备是指未与任何编译设备具有关联关系的计算设备,换言之,非特定设备是指在设备信息表中“专用标识”字段为空的计算设备。

在上述过程中,针对不与任何特定设备具有关联关系的编译任务,通过优先考虑为编译任务分配具有充足资源的非特定设备,能够尽量避免占用特定设备的计算资源,其次考虑为该编译任务分配具有充足资源的特定设备,能够尽量保证编译任务可以顺利执行而避免陷入等待,最后如果两者都不满足再进入等待状态,从而能够实现按照一定优先级次序来进行计算设备的动态分配,提高整个调度系统的资源利用率。

在一些实施例中,在优先考虑为编译任务分配具有充足资源的非特定设备的情况下,执行如下操作:在该计算集群中存在空闲的非特定设备的情况下,为该编译任务分配该空闲的非特定设备,空闲的非特定设备是指当前未被分配任何编译任务的计算设备,比如,在设备信息表中查询得到“专用标识”字段为空的所有非特定设备,接着,在所有非特定设备中进一步筛选得到“当前负载数”字段为空或者“已分配任务标识”字段为空的各个设备,这些筛选得到的设备就是空闲的非特定设备,在仅筛选得到一个空闲的非特定设备时,将编译任务直接分配到该筛选得到的单个非特定设备,在筛选得到多个空闲的非特定设备时,可以将该编译任务随机分配到任一筛选得到的非特定设备,本申请实施例对此不进行具体限定;此外,在该计算集群中不存在空闲的非特定设备的情况下,可以从设备信息表中确定每个非特定设备的空闲资源,比较每个非特定设备的空闲资源和该编译任务所需占用的计算资源,接着,为该编译任务分配该空闲资源大于该编译任务所需占用的计算资源的非特定设备,这样能够保证为编译任务分配到具有充足资源的非特定设备,可选地,假设存在多个空闲资源大于该编译任务所需占用的计算资源的非特定设备,可以优先为该编译任务分配空闲资源最多的非特定设备,这样能够避免出现资源卡顿,降低计算集群内部计算资源的竞争度。

在一些实施例中,在该计算集群中不存在该符合第一资源条件的非特定设备的情况下,此时由于计算集群内部所有的非特定设备都不具有充足资源来执行该编译任务,可以考虑为该编译任务分配具有充足资源的特定设备,即,在为该编译任务分配符合第二资源条件的特定设备时,执行如下操作:为该编译任务分配空闲的、且与该编译任务的下游任务具有关联关系的特定设备,该下游任务为等待该编译任务执行完毕后才能执行的任务,换言之,从设备信息表中查询得到“专用标识”字段不为空的所有特定设备,接着,对每个特定设备,判断该特定设备具有关联关系的关联编译任务是否为该编译任务的下游任务,进而从与该编译任务的下游任务具有关联关系的特定设备中,优先分配空闲的、且与该编译任务的下游任务具有关联关系的特定设备;此外,在该计算集群中不存在空闲的、且与该编译任务的下游任务具有关联关系的特定设备的情况下,可以从设备信息表中查询得到每个与该编译任务的下游任务具有关联关系的特定设备的空闲资源,接着,为该编译任务分配该空闲资源大于该编译任务所需占用的计算资源、且与该编译任务的下游任务具有关联关系的特定设备;此外,假设计算集群中不存在该空闲资源大于该编译任务所需占用的计算资源、且与该编译任务的下游任务具有关联关系的特定设备,则令该编译任务进入等待状态。

示意性地,在设备信息表中查询得到“专用标识”字段不为空的所有特定设备,接着,对每个特定设备,判断该特定设备的关联编译任务是否为当前编译任务的下游任务,换言之,判断该编译任务是否为该特定设备的关联编译任务的上游任务,读取到特定设备“专用标识”字段记录的任务名称后,在编译信息表中查询该任务名称所指示的关联编译任务的“上游ID”字段,如果“上游ID”字段记录的任务ID恰好等于当前待分配的编译任务的任务ID,说明当前的编译任务就是该特定设备的关联编译任务的上游任务,重复执行上述操作,能够筛选得到所有与该编译任务的下游任务具有关联关系的特定设备,接着,从筛选得到的各个特定设备中,优先为该编译任务分配空闲的特定设备,如果不存在空闲的特定设备,则再分配目前剩余的空闲资源大于该编译任务所需占用的计算资源的特定设备。

在上述过程中,通过针对特定设备,除了判断是否空闲、是否具有充足资源之外,还判断该编译任务是否为该特定设备的关联编译任务的上游任务,能够保证特定设备优先为其关联编译任务以及该关联编译任务的上游任务提供计算资源,对于其他不具有上游依赖关系的编译任务则不会占用本特定设备的计算资源,能够保证特定设备的计算资源不会被随意占用,提高了整个计算集群的资源配置合理程度。

在一些实施例中,还可以不判断该编译任务是否为该特定设备的关联编译任务的上游任务,这样能够优先保证当前编译任务可以被尽快分配到某个计算设备上,避免当前编译任务进入等待状态,能够加快编译任务分配计算设备的进度。

图4是本申请实施例提供的一种调度决策服务的计算设备筛选原理示意图,如图4所示,假设在计算集群中包含计算设备401~410,阴影部分代表计算设备上已被占用的计算资源,空白部分代表计算设备上的空闲资源(即未被占用的计算资源),在某一时刻唤醒了一个编译任务,该编译任务请求调度决策服务分配一个计算设备,那么可以执行如下筛选:首先,筛选得到计算集群内空闲资源大于该编译任务所需占用的计算设备405~410,其中,计算设备405~408都是非特定设备,计算设备409~410是特定设备,接着,筛选得到空闲的非特定设备405和406,假设不存在空闲的非特定设备,则接着筛选得到资源充足的非特定设备407和408,假设不存在资源充足的非特定设备,则接着筛选得到空闲的且与该编译任务的下游任务具有关联关系的特定设备409,例如,特定设备409与任务ID为13和140的编译任务具有关联关系,且当前编译任务是任务ID为13或140的编译任务的上游任务(如ID为12或139的编译任务),假设也不存在空闲的且与该编译任务的下游任务具有关联关系的特定设备,则接着筛选得到剩余的空闲资源最大、且与该编译任务的下游任务具有关联关系的特定设备410,例如,特定设备410与任务ID为171的编译任务具有关联关系,且当前编译任务是任务ID为171的编译任务的上游任务(如ID为170的编译任务)。

图5是本申请实施例提供的一种调度决策策略的原理性示意图,如图5所示,假设请求队列中包含ID为13和ID为1352的两个编译任务,目前正在并行唤醒这两个编译任务,对每个编译任务,在步骤501中,判断是否要在特定设备上执行,比如,查询编译信息表中该编译任务所在数据行的“固定IP”字段,如果“固定IP”字段为空,代表编译任务不与任何特定设备具有关联关系,进入步骤503,如果“固定IP”字段不为空,代表编译任务与该字段所记录IP地址指示的特定设备具有关联关系,进入步骤502;在步骤502中,判断特定设备剩余的空闲资源是否充足,即判断空闲资源是否大于该编译任务所需占用的计算资源,如果空闲资源大于该编译任务所需占用的计算资源,代表剩余的空闲资源充足,则返回特定设备的IP地址,并立即执行编译任务,如果空闲资源小于或等于该编译任务所需占用的计算资源,代表剩余的空闲资源不足,则返回编译器Operator,并进入等待状态;在步骤503中,选择剩余的空闲资源充足的计算设备,此时依次判断:(1)选择空闲的非特定设备,如果存在空闲的非特定设备,则返回空闲的非特定设备的IP地址,并立即执行编译任务,如果没有空闲的非特定设备,进入(2);(2)选择不空闲但空闲资源充足的非特定设备,如果存在空闲资源充足的非特定设备,则返回空闲资源充足的非特定设备的IP地址,并立即执行编译任务,如果没有空闲资源充足的非特定设备,进入(3);(3)选择空闲的特定设备,接着,判断该特定设备的关联编译任务是否为当前的编译任务的下游任务,或者判断该编译任务是否为该特定设备的关联编译任务的上游任务,如果满足该特定设备的关联编译任务是当前的编译任务的下游任务,或者满足该编译任务是该特定设备的关联编译任务的上游任务(两者等价),则返回空闲的且满足上述等价的任一条件的特定设备的IP地址,并立即执行编译任务,如果没有空闲的且满足上述条件的特定设备,进入(4);(4)选择不空闲但空闲资源充足的特定设备,接着,判断是否满足上述等价的任一条件,如果满足上述等价的任一条件,返回空闲资源充足的且满足条件的特定设备的IP地址,并立即执行编译任务,如果没有空闲资源充足且满足条件的特定设备,则返回编译器Operator,并进入等待状态。

在上述步骤302-305中,示出了流程调度设备为该编译任务分配用于处理该编译任务的计算设备的一种可能实施方式,即,对与特定设备具有关联关系的编译任务,优先分配空闲的特定设备,如果没有空闲的特定设备,再分配空闲资源充足的特定设备,如果均不满足,则进入等待状态;对与特定设备没有关联关系的编译任务,则优先分配空闲的非特定设备,如果没有空闲的非特定设备,再分配空闲资源充足的非特定设备,如果没有空闲资源充足的非特定设备,再分配空闲的且与该编译任务的下游任务具有关联关系的特定设备,如果没有空闲的且与该编译任务的下游任务具有关联关系的特定设备,再分配空闲资源充足的且与该编译任务的下游任务具有关联关系的特定设备,如果均不满足,则进入等待状态。

在另一些实施例中,还可以执行如下分配策略:对与特定设备具有关联关系的编译任务,优先分配空闲资源充足且最大的非特定设备,如果没有空闲资源充足的非特定设备,则进入等待状态;对与特定设备没有关联关系的编译任务,则优先分配空闲资源充足且最大的非特定设备,如果没有空闲资源充足的非特定设备,再分配空闲资源充足且最大的特定设备,如果均不满足,则进入等待状态。即,只需要保证空闲资源充足即可,在空闲资源充足的设备中优先分配空闲资源最大的设备,这样无需判断设备是否空闲,能够节约设备分配调度阶段的繁琐度,提高设备分配调度阶段的协调效率。

306、流程调度设备向该计算设备发送该编译任务的远程执行命令,该远程执行命令用于指示该计算设备通过云盘中存储的地图数据执行该编译任务。

上述步骤306与上述步骤203类似,这里不做赘述。

307、计算设备响应于该远程执行命令,基于云盘中存储的地图数据,执行该编译任务,向该流程调度设备返回该编译任务的执行状态。

在一些实施例中,用于处理任一地图业务请求的编译任务的计算设备均挂载至该云盘,换言之,所有计算集群的所有计算设备都挂载到同一云盘上,该云盘是指由多个存储设备构成的存储集群(相当于一个共享存储系统),该存储集群用于存储编译任务所需的地图数据。

在一些实施例中,由于所有计算设备都挂载到同一云盘上,利用同盘的优势,在编译任务的执行过程中,以软链接的方式来减少数据的本地拷贝,软链接又叫符号链接,用于链接不同文件系统中的任意文件或目录,通常表现是一个文件包含了另一个文件的路径名。在通过符号链接对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。通过软链接的方式进行云盘中的远程编译,能够减少本地数据的拷贝,从而进一步提升编译任务的执行效率,优化存储空间的资源利用率。

图6是本申请实施例提供的一种云盘数据存储软链接的结构示意图,如图6所示,在编译任务的运行过程中,将软链接上的路网数据“2022021203”读取到数据目录“road->”中、将软链接上的挖掘数据“220202163456”读取到数据目录“digdata->”中,同理,将软链接上的诱导工具包“202202161114”读取到工具执行目录“guid_compile”中,将软链接上的权值工具包“20220216093323”读取到工具执行目录“cost_compile”中,接着对数据目录和工具执行目录中各个符号链接的源文件进行数据编译,最终可以得到编译结果目录601,编译结果目录601中记录了当前编译任务的一系列编译结果,每个编译结果都将提供给一个或多个服务端数据目录602,在服务端数据目录602中将划分成多个服务端数据(ServiceData),每个服务端数据都以软链接的方式来与数据目录或者编译结果目录的符号链接相连,并提供给业务服务器来利用服务端数据进行后续业务处理。

在一些实施例中,每个计算设备在对分配得到的编译任务执行完毕后,计算设备向流程调度设备返回该编译任务的执行状态,该执行状态用于指示编译任务是执行成功还是执行失败。

308、在至少一个编译任务的执行状态均为执行成功的情况下,流程调度设备返回至少一个计算设备基于该远程执行命令执行得到的编译结果。

在一些实施例中,流程调度设备对每个编译任务都执行上述步骤302-307,需要说明的是,对于一些不存在上下游依赖关系的编译任务,流程调度设备可以并行地唤醒这些编译任务,即同时为多个不存在上下游依赖关系的编译任务分配多个计算设备,并同时向多个计算设备发送远程执行命令,并接收各个计算设备返回的执行状态,或者在等待超时后获取到一个执行状态(默认等待超时则执行失败),本申请实施例对此不进行具体限定。

在一些实施例中,针对一些存在上下游依赖关系的编译任务,流程调度设备在向每个编译任务分配得到的计算设备发送远程执行命令之后,获取计算设备在基于该远程执行命令执行该编译任务后得到的执行状态,如果执行状态为执行成功,继续唤醒该编译任务的下游任务,如果执行状态为执行失败,则需要重新为编译任务分配一个新的计算设备,以在新的计算设备上再次执行该编译任务,重复上述操作直到所有的编译任务的执行状态都指示执行成功,此时代表了所有编译任务都已经执行成功,云盘上将会产生一个该至少一个编译任务都顺次执行完毕后的编译结果,流程调度设备可以从云盘中读取到该编译结果,并将该编译结果返回给发送该地图业务请求的设备,例如,地图业务请求是终端上的客户端直接发送到流程调度设备的,流程调度设备将编译结果返回给客户端,又例如,地图业务请求是业务服务器转发到流程调度设备的,流程调度设备将编译结果返回给业务服务器,由业务服务器对编译结果进行加工处理或整合其他数据后再返回给客户端,本申请实施例对此不进行具体限定。

图7是本申请实施例提供的一种地图数据的编译方法的原理性流程图,如图7所示,假设流程调度设备上包括调度决策服务701、流程引擎702和远程执行工具三个模块,在地图数据的编译流程中,在接收到地图业务请求后启动流程,通过流程引擎702来解析得到至少一个编译任务,由调度决策服务701来对该至少一个编译任务初始化得到一张编译信息表,接着,由调度决策服务701来通知编译器Operator启动DAG(Directed AcyclicGraph,有向无环图),DAG是编译器Operator后端的核心数据结构,接着,由编译器Operator来获取当前编译任务的执行IP,即请求调度决策服务701为当前编译任务分配一个合适的计算设备,接着,编译器Operator通过远程执行工具,向分配得到的计算设备发送该编译任务的远程执行命令,比如,如图7所示,调度决策服务701为当前编译任务分配了一个执行IP“0.0.0.3”,那么调用远程执行工具,向CVM集群703(即编译任务路由到的计算集群)中IP地址为“0.0.0.3”的计算设备发送当前编译任务的远程执行命令,以使得IP地址为“0.0.0.3”的计算设备能够执行当前编译任务。

在上述地图数据的编译流程中,通过基于云原生的地图数据编译的基础环境,能够实现存算分离,且当CVM集群中的计算资源不够用或存在故障计算设备时,能够快速自动化地实现计算设备的扩容或缩容操作。

示意性地,在CVM集群需要进行缩容时,比如要移除CVM集群中的某个计算设备,只需要在设备信息表中删除该计算设备所在数据行,并在计算设备上取消挂载到云盘即可,或者,在设备信息表中将需要移除的计算设备标记为非可用状态,同样能够避免再向需要移除的计算设备分配新的编译任务。

示意性地,在CVM集群中任一计算设备发生故障(可能是网络不通、机器宕机等缘故)的情况下,如果该计算设备不是空闲的,此时已经向该发生故障的计算设备分配的目标编译任务在编译器Operator中会停止执行,即目标编译任务会被阻塞,同时编译器Operator会向调度决策服务反馈该计算设备发生故障,接着,调度决策服务在设备信息表中将该发生故障的计算设备标记为非可用状态,这样能够及时避免再向发生故障的计算设备分配新的编译任务,最后,调度决策服务从CVM集群中再次为该目标编译任务重新分配一个处于可用状态的目标计算设备,并通过编译器Operator来重新启动该目标编译任务,这样不会由于目标编译任务阻塞而导致整个编译流程被阻塞,只需要小范围重做目标编译任务就能够继续执行整个编译流程,避免由于单个编译任务阻塞导致整个编译流程回滚或重做,极大提升了发生故障情况下的编译成功率和编译效率。

示意性地,在CVM集群需要进行扩容时,即在向CVM计算集群中添加第一计算设备(指扩容时新增的计算设备)的情况下,调度决策服务可以将该第一计算设备添加到设备信息表中,接着,对该第一计算设备执行自动初始化操作,可选地,该自动初始化操作包括两个步骤:a)在该第一计算设备上挂载该云盘;b)为该第一计算设备设置编译任务所依赖的环境变量。在初始化操作完毕后,编译器Operator在启动新的编译任务时,调度决策服务就会动态地读取到新增的第一计算设备的配置信息,并通过流程调度策略来判断是否要将当前的编译任务分配到第一计算设备上,相当于将第一计算设备也添加到候选的任务处理队列中。

在上述存算分离系统架构下,通过设置调度决策服务这一模块,能够对计算设备实现自动化调度机制,且能够提高数据更新和编译效率的稳定性,实现数据、策略的快速迭代,能够将最新、最好的编译结果最快地提供给相关业务服务器,从而间接地提高应用地图业务的应用或项目或产品的使用体验。

上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。

本申请实施例提供的方法,通过对地图业务请求的编译任务,根据系统内负载请求动态实时分配计算设备,并通过远程执行命令来触发计算设备启动编译任务,由于计算设备挂载到云盘中,从而能够读写云盘中的地图数据以实现远程编译,由于每个编译任务绑定的计算设备都能够通过挂载到云盘来读写云盘中的地图数据,避免了在编译任务与物理机绑定的情况下需要在上下游任务的物理机之间进行数据拷贝,简化了地图数据的编译流程,极大提升了地图数据的编译效率。

进一步的,由于计算设备所在的计算集群以及云盘所在的存储集群,都是基于云原生环境搭建的存算分离编译平台,能够保证提供充足的计算资源和存储资源,改善了传统基于大核心、大存储的物理机结合流程引擎的搭建方案下,资源计算不足、同一物理机上计算资源和存储资源耦合等问题。

进一步的,基于存算分离系统架构,由于地图数据都被统一存储在云盘中,只需要在云盘中部署编译任务所依赖的软件环境和编译工具,能够实现一次部署、所有计算设备共用,大大降低了编译依赖软件环境的部署难度,改善了编译环境部署和迁移困难的情况。

进一步的,由于CPU和内存等计算资源和存储空间等存储资源可以分开进行规划,不会因为需要更多的计算资源而不得不顺带增加绑定在一起的存储资源,可以按照实际编译需求来申请合适的计算资源和存储资源,实现了计算资源和存储资源的充分利用,提升了资源利用率,也降低了硬件成本。

进一步的,由于云盘内只需要持久化存储一份数据,并以软链接的方式挂接来组织目录,使得数据只生成一次并占用一份存储空间,也不需要跨计算设备来传输或拷贝数据,不会存储重复、冗余数据,能够最大限度地减少占用的存储空间。

进一步的,由于计算集群内部各个计算设备都只需要挂载到云盘并部署相应的环境变量,这样在存在扩容需求时,从申请计算设备、初始化到将计算设备添加到计算集群,都能够通过脚本工具来自动化实现,从而为计算设备的快速自动化扩容提供了基础,降低了计算集群扩容的人力成本和时间成本,同理,在存在缩容需求或发现故障计算设备时,也能够自动化快速从计算集群中移除计算设备或将故障计算设备标记为非可用状态,从而能够灵活调度计算设备、自动避开故障设备、编译流程调整,自动化实现集群扩容或缩容,提升了计算集群的扩展性和伸缩性,降低了整个系统的维护成本和维护难度。

进一步的,通过建立计算集群,同时由流程调度设备提供灵活智能的调度机制,一方面能够充分利用计算集群内空闲的计算资源,提高编译并行度,提升编译效率,另一方面,还能够有效识别出来发生异常的计算设备,并将受影响的编译任务快速更换到新的计算设备上重新执行,不会由于某一计算设备故障而阻塞流程,改善由于集群内部单个节点故障所带来的影响。

进一步的,由于依托云原生环境,能够保障编译流程的稳定性,使得数据和策略的迭代能够稳定快速地在线上生效,又例如,在按照业务类型划分计算集群的情况下,能够将正式环境和测试环境分开,使得任何编译流程调整都需要经过完整测试后才能够推到正式环境,且正式环境是独立的正式编译集群来处理,不会受到测试业务或其他项目业务的资源竞争或影响,并且云上计算资源和底层环境都比线下维护的环境要更加稳定、可靠,异常检测和异常修复机制也更加完善。

图8是本申请实施例提供的一种地图数据的编译装置的结构示意图,请参考图8,该装置包括:

获取模块801,用于响应于地图业务请求,获取该地图业务请求关联的至少一个编译任务;

分配模块802,用于针对该至少一个编译任务中的任一编译任务,为该编译任务分配用于处理该编译任务的计算设备;

发送模块803,用于向该计算设备发送该编译任务的远程执行命令,该远程执行命令用于指示该计算设备通过云盘中存储的地图数据执行该编译任务;

返回模块804,用于返回至少一个计算设备基于该远程执行命令执行得到的编译结果。

本申请实施例提供的装置,通过对地图业务请求的编译任务,根据系统内负载请求动态实时分配计算设备,并通过远程执行命令来触发计算设备启动编译任务,由于计算设备挂载到云盘中,从而能够读写云盘中的地图数据以实现远程编译,由于每个编译任务绑定的计算设备都能够通过挂载到云盘来读写云盘中的地图数据,避免了在编译任务与物理机绑定的情况下需要在上下游任务的物理机之间进行数据拷贝,简化了地图数据的编译流程,极大提升了地图数据的编译效率。

在一些实施例中,基于图8的装置组成,该分配模块802包括:

确定单元,用于基于编译信息表,确定处理该编译任务所需的计算资源,该编译信息表用于记录多个编译任务所需占用的计算资源;

该确定单元,还用于基于设备信息表,确定计算集群中的多个计算设备各自的空闲资源;

分配单元,用于为该编译任务分配空闲资源大于该计算资源的计算设备。

在一些实施例中,在该编译任务与特定设备具有关联关系的情况下,该分配单元用于:

若该特定设备的空闲资源大于该计算资源,将该编译任务分配至该特定设备;

若该特定设备的空闲资源小于或等于该计算资源,令该编译任务进入等待状态。

在一些实施例中,在该编译任务不与任何特定设备具有关联关系的情况下,基于图8的装置组成,该分配单元包括:

第一分配子单元,用于为该编译任务分配该符合第一资源条件的非特定设备;

第二分配子单元,用于在该计算集群中不存在该符合第一资源条件的非特定设备的情况下,为该编译任务分配符合第二资源条件的特定设备;

等待子单元,用于在该计算集群中不存在该符合第二资源条件的特定设备的情况下,令该编译任务进入等待状态。

在一些实施例中,该第一分配子单元用于:

在该计算集群中存在空闲的非特定设备的情况下,为该编译任务分配该空闲的非特定设备;

在该计算集群中不存在空闲的非特定设备的情况下,为该编译任务分配该空闲资源大于该计算资源的非特定设备。

在一些实施例中,该第二分配子单元用于:

为该编译任务分配空闲的、且与该编译任务的下游任务具有关联关系的特定设备,该下游任务为等待该编译任务执行完毕后才能执行的任务;

在该计算集群中不存在空闲的、且与该编译任务的下游任务具有关联关系的特定设备的情况下,为该编译任务分配该空闲资源大于该计算资源、且与该编译任务的下游任务具有关联关系的特定设备。

在一些实施例中,基于图8的装置组成,该分配模块802还包括:

路由单元,用于将该编译任务路由至与该地图业务请求的业务类型相匹配的计算集群。

在一些实施例中,基于图8的装置组成,该分配模块802还包括:

路由单元,用于在该编译任务不依赖全局地图数据的情况下,将该编译任务路由至支持将该编译任务拆分成多个子任务的计算集群;

该路由单元,还用于在该编译任务依赖全局地图数据的情况下,将该编译任务路由至计算资源符合第三资源条件的计算集群。

在一些实施例中,基于图8的装置组成,该分配模块802还包括:

路由单元,用于确定该编译任务关联的调用接口服务;将该编译任务路由至与该调用接口服务所关联的计算集群。

在一些实施例中,基于图8的装置组成,该装置还包括:

阻塞模块,用于在任一计算设备发生故障的情况下,阻塞目标编译任务,该目标编译任务为向该发生故障的计算设备分配的编译任务;

标记模块,用于在设备信息表中,将该发生故障的计算设备标记为非可用状态;

该分配模块802,还用于为该目标编译任务重新分配处于可用状态的目标计算设备。

在一些实施例中,基于图8的装置组成,该装置还包括:

添加模块,用于在向计算集群中添加第一计算设备的情况下,将该第一计算设备添加到设备信息表中;

挂载模块,用于在该第一计算设备上挂载该云盘;

设置模块,用于为该第一计算设备设置编译任务所依赖的环境变量。

在一些实施例中,用于处理任一地图业务请求的编译任务的计算设备均挂载至该云盘,该云盘是指由多个存储设备构成的存储集群,该存储集群用于存储编译任务所需的地图数据。

上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。

需要说明的是:上述实施例提供的地图数据的编译装置在控制编译地图数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的地图数据的编译装置与地图数据的编译方法实施例属于同一构思,其具体实现过程详见地图数据的编译方法实施例,这里不再赘述。

图9是本申请实施例提供的一种计算机设备的结构示意图,该计算机设备900可以被提供为流程调度设备或计算集群中的任一计算设备,该计算机设备900可因配置或性能不同而产生比较大的差异,该计算机设备900包括一个或一个以上处理器(CentralProcessing Units,CPU)901和一个或一个以上的存储器902,其中,该存储器902中存储有至少一条计算机程序,该至少一条计算机程序由该一个或一个以上处理器901加载并执行以实现上述各个实施例提供的地图数据的编译方法。可选地,该计算机设备900还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备900还包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由终端中的处理器执行以完成上述各个实施例中的地图数据的编译方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。

在示例性实施例中,还提供了一种计算机程序产品,包括至少一条计算机程序,该至少一条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取该至少一条计算机程序,该一个或多个处理器执行该至少一条计算机程序,使得计算机设备能够执行以完成上述实施例中的地图数据的编译方法。

本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 地图数据显示方法、装置、电子设备及计算机存储介质
  • 用于获得地图的方法、装置、设备和计算机可读存储介质
  • 地图构建方法、装置、计算机设备及存储介质
  • 地图信息显示方法、装置、计算机设备及存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 地图数据存储装置、地图数据更新方法及计算机可读存储介质
  • 图像区域获取系统
技术分类

06120116483513