CN109062680A - 一种数据加载方法、装置和存储介质 - Google Patents
一种数据加载方法、装置和存储介质 Download PDFInfo
- Publication number
- CN109062680A CN109062680A CN201810929960.4A CN201810929960A CN109062680A CN 109062680 A CN109062680 A CN 109062680A CN 201810929960 A CN201810929960 A CN 201810929960A CN 109062680 A CN109062680 A CN 109062680A
- Authority
- CN
- China
- Prior art keywords
- data
- data loading
- tasks
- loading tasks
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据加载方法、装置和存储介质。本发明实施例获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构;根据依赖拓扑结构,计算数据加载任务的调度权重;若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中;从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。该方案极大的提高了数据的加载速度,提升了数据加载效率。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种数据加载方法、装置和存储介质。
背景技术
随着互联网技术的发展,人们已经习惯每天通过手机中的应用软件,例如新闻软件等,来了解时事新闻,或是查看自己感兴趣的文章。这些应用软件在启动时或是进入消息推荐页面时,通常需要加载大量的数据文件,以展示给用户最新、最热门或是用户最感兴趣的消息。
应用软件在进行数据加载时,需要加载数据量可能比较大,而且数据文件之间可能存在依赖关系,例如数据A完成加载之后才能加载数据B,加载的顺序受到限制。目前的解决方案是,应用软件会将有依赖关系的数据加载任务全部分配给同一加载节点进行处理。
在对现有技术的研究和实践过程中,本发明的发明人发现,如果将有依赖关系的数据加载任务全部分配给同一加载节点进行处理,则会导致有的数据加载节点中数据加载任务少,花费时间短,而有的加载节点中任务量大,完成时间长,就需要其他先完成节点的等待后完成的节点,延长数据加载的整体时间,导致数据加载的效率非常低。
发明内容
本发明实施例提供一种数据加载方法、装置和存储介质,旨在解决数据加载效率低的技术问题。
本发明实施例提供一种数据加载方法,包括:
获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构;
根据所述依赖拓扑结构,计算数据加载任务的调度权重;
若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中;
从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据。
在一些实施例中,所述获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构,包括:
获取待加载数据的属性信息,所述属性信息指示了待加载数据依赖的前序数据信息;
根据所述待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;
根据所述数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
在一些实施例中,所述根据所述数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构,包括:
将所述数据加载任务抽象为节点,根据所述数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;
根据所述各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,所述依赖拓扑结构指示了所述数据加载任务的前序任务和/或后继任务。
在一些实施例中,所述根据所述依赖拓扑结构,计算数据加载任务的调度权重,包括:
根据所述依赖拓扑结构,确定所述数据加载任务是否有后继任务;
若所述数据加载任务有后继任务,则获取所述后继任务的调度权重;
根据所述后继任务的调度权重及所述数据加载任务自身的运行时间,计算所述数据加载任务的调度权重。
在一些实施例中,所述数据加载任务有多个后继任务,所述根据所述后继任务的调度权重及所述数据加载任务自身的运行时间,计算所述数据加载任务的调度权重,包括:
在所述多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;
将所述基础调度权重加上所述数据加载任务自身的运行时间,得到所述数据加载任务的调度权重。
在一些实施例中,所述根据所述依赖拓扑结构,确定所述数据加载任务是否有后继任务,之后还包括:
若所述数据加载任务无后继任务,则根据所述数据加载任务自身的运行时间,配置所述数据加载任务的调度权重。
在一些实施例中,所述若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中,包括:
确定所述数据加载任务依赖的全部前序任务,获取所述全部前序任务的执行状态;
若根据所述全部前序任务的执行状态确定所述全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中。
在一些实施例中,所述从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据,之后还包括:
在所述数据加载任务完成后,更新其执行状态。
相应的,本发明实施例还提供了一种数据加载装置,包括:
拓扑单元,用于获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构;
权重单元,用于根据所述依赖拓扑结构,计算数据加载任务的调度权重;
队列单元,用于若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中;
加载单元,用于从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据。
相应的,本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例提供的任一项数据加载方法。
本发明实施例通过获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构,用以确定各数据加载任务的依赖关系和调取权重;然后,根据所述依赖拓扑结构,计算数据加载任务的调度权重,以确定数据加载任务的重要程度;若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中,等待执行;从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据。该方案通过配置数据加载任务的依赖拓扑结构,理清数据加载任务的依赖关系,并且,依据数据加载任务的依赖拓扑结构计算其中各数据加载任务调度权重,以确定各数据加载任务的执行顺序。并且,在数据加载任务依赖的全部前序任务都已经完成执行后,再将其配置到任务堆中等待执行,从而便于采用时间最优化的贪心策略,使得每次执行的数据加载任务都是任务堆中调度权重最大的,实现最先执行耗时最久的数据加载任务链路,避免耗时短的任务链路完成后,还要等待其他数据链路的执行,造成加载时间的浪费。由此,该方案极大的提高了数据的加载速度,提升了数据加载效率,待加载数据文件数量的增加也不会明显延长数据加载整体耗费的时间。该方案将数据加载问题抽象转化成多机多任务的调度问题,将调度的粒度细化到单个任务,而不是整个关联的任务集合,对于复杂的数据依赖任何也能很好的支持,具有很强的灵活性和扩展性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的信息交互系统的场景示意图;
图1b是本发明实施例提供的数据加载方法的流程示意图;
图1c是本发明实施例提供的依赖拓扑结构示意图;
图2是本发明实施例提供的数据加载应用场景示意图;
图3是本发明实施例提供的数据加载装置结构示意图;
图4是本发明实施例提供的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种信息交互系统,该系统包括本发明实施例任一提供的数据加载装置,该数据加载装置可以集成在终端中,比如,该终端可以是手机、平板电脑等。此外,该系统还可以包括其他设备,比如服务器。
参考图1a,本发明实施例提供了一种信息交互系统,包括:终端10和服务器20,终端10与服务器20通过网络30连接。其中,网络30中包括路由器、网关等等网络实体,图中并为示意出。终端10可以通过有线网络或无线网络与服务器20进行信息交互,比如可以从服务器20下载应用(如新闻应用)和/或应用更新数据包和/或与应用相关的数据信息或业务信息。其中,终端10可以为手机、平板电脑、笔记本电脑等设备,图1a是以终端10为手机为例。该终端10中可以安装有各种用户所需的应用,比如具备娱乐功能的应用(如新闻应用,问答软件等),又如具备服务功能的应用(如地图导航应用、团购应用等)。
基于上述图1a所示的系统,以新闻应用为例,终端10可以通过网络30从服务器10中下载新闻数据。例如,用户打开终端10中的新闻应用推荐页面,终端10需要下载的新闻数据即为待加载数据,具体地,终端10可以获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构;然后,根据依赖拓扑结构,计算数据加载任务的调度权重;若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中;终端10从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
该方案通过配置数据加载任务的依赖拓扑结构,理清数据加载任务的依赖关系,并且,依据数据加载任务的依赖拓扑结构计算其中各数据加载任务调度权重,以确定各数据加载任务的执行顺序。并且,在数据加载任务依赖的全部前序任务都已经完成执行后,再将其配置到任务堆中等待执行,从而便于采用时间最优化的贪心策略,使得每次执行的数据加载任务都是任务堆中调度权重最大的,实现最先执行耗时最久的数据加载任务链路,避免耗时短的任务链路完成后,还要等待其他数据链路的执行,造成加载时间的浪费。由此,该方案极大的提高了数据的加载速度,提升了数据加载效率,待加载数据文件数量的增加也不会明显延长数据加载整体耗费的时间。
上述图1a的例子只是实现本发明实施例的一个系统架构实例,本发明实施例并不限于上述图1a所示的系统结构,基于该系统架构,提出本发明各个实施例。
在本实施例中,将从数据加载装置的角度进行描述,该数据加载装置具体可以集成在网络设备如服务器等设备中。
本发明实施例提供一种数据加载方法,包括:获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构;根据依赖拓扑结构,计算数据加载任务的调度权重;若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中;从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
如图1b所示,该数据加载方法的具体流程可以如下:
101、获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构。
例如,在打开应用软件主页或是消息推荐页面时,数据加载装置从数据库、服务器等获取需要加载的数据,作为待加载数据。一个待加载数据可以是一个待加载的数据文件,或是一个待加载的数据压缩包等,具体可根据实际需要灵活配置。
需要说明的是,可能有多个待加载数据,不同的待加载数据文件大小可能不同,而且,不同的待加载数据之间可能存在依赖关系。例如,一待加载数据的数据加载任务必须在另一或另外多个待加载数据加载完成后才能执行。
数据加载装置整理各待加载数据之间的依赖关系,作为各待加载数据对应的数据加载任务之间的依赖关系,然后,数据加载装置将数据加载任务之间的依赖关系转换为节点之间的连接关系,并画出对应的拓扑图,得到的拓扑图即包含了数据加载任务的依赖拓扑结构。
在一些实施例中,步骤101可以包括:获取待加载数据的属性信息,属性信息指示了待加载数据依赖的前序数据信息;根据待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
例如,数据加载装置提取待加载数据的属性信息。其中,属性信息中记载了待加载数据的名称、数据量、依赖的前序数据信息和/或完成加载的运行时间等。依赖的前序数据信息指示了待加载数据依赖的数据情况,比如待加载数据可能没有依赖的前序数据,或是有依赖数据,依赖的前序数据可能有一个或多个。需要说明的是,前序数据可以是其他的待加载数据。
其中,待加载数据依赖的前序数据,是指在加载此待加载数据之前,须加载完成的数据。对应的,此待加载数据也即其前序数据的后继数据,也即在前序数据加载完成后才能进行加载。另外,本实施例中以待加载数据依赖的前序数据是与待加载数据直接关联的数据进行举例说明。为便于实施,待加载数据前序数据的前序数据不再作为待加载数据的前序数据来考虑。例如,数据A依赖的前序数据为数据B,则数据A只能在数据B加载完成后才能进行加载,对应的,也可以说数据B为数据A的后继数据。
并且,数据加载装置可以配置各待加载数据对应的数据加载任务,或是获取已经配置好的各待加载数据对应的数据加载任务。其中,各数据加载任务指示了对应的待加载数据,执行数据加载任务即可加载对应的待加载数据。
在得到各待加载数据的属性信息和对应的数据加载任务后,数据加载装置可以根据各待加载数据依赖的前序数据信息,对应得到各数据加载任务依赖的前序任务信息。其中,执行一数据加载任务之前,须完成执行的其他数据加载任务即为此数据加载任务依赖的前序任务。对应的,此数据加载任务即为其前序任务的后继任务,也即在前驱任务执行完成后才能执行。数据加载任务可能有一个或多个前序任务。本实施例中,为便于实施,数据加载任务的前序任务的前序任务不再作为数据加载任务的前序任务来考虑。需要说明的是,即使将数据加载任务的前序任务的前序任务也作为数据加载任务的前序任务来考虑,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上可能会有改变之处,但不超出本发明的保护范围。
例如,数据A依赖的前序数据为数据B,则数据A对应的数据加载任务A只能在数据B对应的数据加载任务B执行完成后才能执行,对应的,也可以说数据加载任务B为数据加载任务A的后继任务。
然后,数据加载装置可以将各数据加载任务抽象为一个个虚拟的节点,根据各数据加载任务的前序任务信息构建各节点之间的依赖关系,得到数据加载任务的依赖拓扑结构。
在一些实施例中,步骤“根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构”包括:将数据加载任务抽象为节点,根据数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;根据各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,依赖拓扑结构指示了数据加载任务的前序任务和/或后继任务。
数据加载装置可以将各数据加载任务抽象为一个个虚拟的节点,并根据各数据加载任务依赖的前序任务信息确定各节点之间的依赖关系。其中,各节点之间的依赖关系也即各数据加载任务之间的依赖关系,包括了各数据加载任务的前序任务和/或后继任务。若数据加载任务无前序任务和/或后继任务,则对应的,将其前序任务和/或后继任务记为无。需要说明的是,各数据加载任务之间的依赖关系可以仅包括各数据加载任务的前序任务,由此,即可以反向得到各数据加载任务的后继任务。
然后,数据加载装置根据各节点之间的依赖关系配置数据加载任务的依赖拓扑结构。各数据加载任务即为依赖拓扑结构中的各个节点,各节点之间可使用连线连接,依赖关系可以使用连线端点上的箭头表征。
数据加载任务的依赖拓扑结构也可以理解为多叉树的森林结构。其中,没有前序任务和后继任务的数据加载任务即为森林结构中的独立节点。有前序任务的数据加载任务可能有一个或多个前驱任务,并且,前驱任务可能也有其对应的前驱任务,因此,各数据加载任务对应的节点通过连线连接成为森林结构中多叉树。
由此,数据加载装置配置得到数据加载任务的依赖拓扑结构。依赖拓扑结构指示了各数据加载任务的前序任务和/或后继任务。例如,依赖拓扑结构如图1c所示,其中,阿拉伯数字1、2、3和4等分别代表数据加载任务1、2、3和4等,图1c中共有14个数据加载任务。图1c中使用连线连接各节点,表征依赖关系,并使用箭头指示具体地依赖关系,箭头指向的数据加载任务依赖于连线另一端的数据加载任务。以数据加载任务7为例,其前序任务为数据加载任务1,后继任务包括数据加载任务10和数据加载任务11。
在另外一些实施例中,数据加载装置在得到各待加载数据的属性信息后,可以根据各待加载数据依赖的前序数据信息,配置各待加载数据之间的依赖关系。其中,各待加载数据之间的依赖关系包括了各待加载数据的前序数据和/或后继数据。若待加载数据无前序数据和/或后继数据,则对应的,将其前序数据和/或后继数据记为无。需要说明的是,各待加载数据之间的依赖关系可以仅包括各待加载数据的前序数据,由此,即可以反向得到各待加载数据的后继数据。
然后,数据加载装置将各个待加载数据抽象为一个个虚拟的节点,根据各待加载数据之间的依赖关系构建各节点之间的依赖关系,配置依赖拓扑结构。各数据加载任务即为依赖拓扑结构中的各个节点,各节点之间可使用连线连接,依赖关系可以使用连线端点上的箭头表征。
然后,数据加载装置使用各待加载数据对应的数据加载任务,分别对应替换掉依赖拓扑结构中的各待加载数据,得到数据加载任务的依赖拓扑结构。
102、根据依赖拓扑结构,计算数据加载任务的调度权重。
其中,数据加载任务的调度权重是指执行此数据加载任务自身耗费的资源及其后继任务耗费的资源总权重。耗费的资源可以包括时间和/或线程数量等等。
本实施例中,以一个数据加载线程单次执行单个数据加载任务,多个数据加载线程并行同时执行多个数据加载任务进行举例说明,并且,以耗费的资源为时间进行举例说明。
因此,数据加载装置可以根据依赖拓扑结构,根据执行其中各数据加载任务耗费的时间,计算得到各数据加载任务的调度权重。例如,各数据加载任务的调度权重可以是其自身运行耗费的时间以及其全部后继任务耗费的时间之和。
在一些实施例中,步骤102可以包括:根据依赖拓扑结构,确定数据加载任务是否有后继任务;若数据加载任务有后继任务,则获取后继任务的调度权重;根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重。
数据加载装置可以根据依赖拓扑结构,查找数据加载任务是否有后继任务,若数据加载任务有后继任务,则获取后继任务的调度权重。需要说明的是,数据加载任务有多个后继任务,则数据加载装置获取各后继任务的调度权重。
例如,在一些实施例中,步骤“根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重”可以包括:在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
步骤“根据依赖拓扑结构,确定数据加载任务是否有后继任务”之后还可以包括:若数据加载任务无后继任务,则根据数据加载任务自身的运行时间,配置数据加载任务的调度权重。
其中,数据加载任务自身的运行时间是指其被执行以加载数据时,能够完成数据加载的时间。可以通过以下几种方式获取:
例如,数据加载装置从数据加载任务对应的待加载数据的属性信息中提取运行时间。
或者,数据加载装置运行此数据加载任务,记录其完成数据加载的时间作为其自身的运行时间。
或者,数据加载装置根据待加载数据的数据量大小,预估其对应的数据加载任务自身的运行时间。具体地,数据加载装置可以获取待加载数据的数据量大小,然后根据预设的数据量级规则确定其对应的数据量等级。其中,预设的数据量等级规则可以根据数据量值将待加载数据划分为多个等级,不同的等级对应不同的数据量区间,若待加载数据的数据量值落入哪个数据量区间,则其数据量等级即为此数据量区间对应的数据量等级。然后,数据加载装置将此数据量等级对应的预设时间作为此数据加载任务自身的运行时间。需要说明的是,各数据量等级预先配置有对应的预设时间,也即加载各数据量等级的数据大致所需的时间。
或者,数据加载装置根据数据加载的历史记录,查询各数据加载任务自身的运行时间。其中,历史记录中记录了数据加载装置已经执行过的各数据加载任务的运行时间,是由数据加载装置在历次执行数据加载任务后记录得到的。
然后,若数据加载任务没有后继任务,则数据加载装置将其自身的运行时间作为其调度权重。
若数据加载任务有一个后继任务,则数据加载装置将其自身的运行时间加上其后继任务的运行时间,得到的数值即为此数据加载任务的调度权重。
若数据加载任务有多个后继任务,则数据加载装置在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重,然后,将基础调度权重加上此数据加载任务自身的运行时间,得到的数值即为此数据加载任务的调度权重。由此,得到的调度权重即可理解为由此数据加载任务开始加载,依次加载其后继任务、后继任务的后继任务……直至不再有后继任务的一个或多个数据加载任务链路中,所需要花费时间最久的一条链路。也即,意味着全部数据加载完成的时间不小于此调度权重。
以图1c为例,数据加载装置可以将没有后继任务的数据加载任务3、数据加载任务12、数据加载任务13和数据加载任务14自身的运行时间分别配置为其调度权重。然后,将数据加载任务14的调度权重作为基础调度值,加上数据加载任务11自身的运行时间,得到的数值作为数据加载任务11的调度权重。对于数据加载任务7,在其后继任务10和11的调度权重中选出数值最大的调度权重,作为基础调度权重,加上数据加载任务7自身的运行时间,得到的数值作为数据加载任务7的调度权重。以此类推,得到依赖拓扑结构中各节点的调度权重。
例如,若数据加载任务10的调度权重大于数据加载任务11,数据加载任务13的调度权重大于数据加载任务14,则可以确定执行数据加载任务链路7-10-13的时间大于链路7-10-14及链路7-11-14的时间。由于数据加载的依赖关系导致数据加载的先后顺序,由此,数据加载任务7根据数据加载任务10计算得到的调度权重,即为执行数据加载任务7及其之后的数据加载任务的多种方案中要花费的最久的时间,也是完成整个数据加载耗费的最短时间。
由此,数据加载装置可得到各数据加载任务的调度权重。可以理解为,数据加载装置从数据加载任务的依赖拓扑结构中最底层的、且没有后继任务的数据记载任务开始,根据其自身运行时间计算其调度权重,然后,根据其调度权重及其前序任务自身的运行时间,计算其前序任务的调度权重,再计算其前序任务的前序任务的调度权重,依次类推,得到依赖拓扑结构中各数据加载任务的调度权重。
由此,数据加载装置计算得到了各数据加载任务的调度权重。
103、若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
其中,任务堆用于存储待执行的数据加载任务。
数据加载装置检测各数据加载任务的执行状态,若检测到一数据加载任务所依赖的全部前序任务都已经完成执行,则将其配置到任务堆中,等待执行,以加载对应的数据。
需要说明的是,若数据加载任务没有前序任务,则将其直接配置到任务堆中。
例如,图1c中,可以直接将没有前序任务的数据加载任务1、数据加载任务2、数据加载任务3、数据加载任务4和数据加载任务5直接配置到任务堆中。若数据加载任务1完成执行,则可以将数据加载任务6和数据加载任务7配置到任务堆中。若数据加载任务1和数据加载任务2全部完成执行,则可以将数据加载任务8配置到任务堆中。
在一些实施例中,步骤103可以包括:确定数据加载任务依赖的全部前序任务,获取全部前序任务的执行状态;若根据全部前序任务的执行状态确定全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
数据加载装置可以根据数据加载任务的依赖拓扑结构,确定数据加载任务依赖的全部前序任务。或者,数据加载装置根据待加载数据属性信息中指示的前序数据,确定数据加载任务依赖的全部前序任务。
然后,数据加载装置获取全部前序任务的执行状态,例如,数据加载装置可以监控数据加载线程执行的数据加载任务及执行状态,得知当前被执行的数据加载任务,并在当前被执行的数据加载任务完成后将此数据加载任务的执行状态配置为已完成。若数据加载任务还未被执行,则将其执行状态配置为未执行。由此,数据加载装置得到了各数据加载任务的执行状态,并实时更新各数据加载任务的执行状态。
若数据加载装置检测到一数据加载任务的全部前序任务的执行状态都已经更新为已完成,则确定此数据加载任务所依赖的前序数据都已经完成加载,此数据加载任务可以执行,数据加载装置将数据加载任务配置到任务堆中。
104、从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
其中,任务堆中可能有多个待执行的数据加载任务。
数据加载装置可以使用多个数据加载线程并行执行各数据加载任务。数据加载线程可以是服务器中独立运行的CPU、独立的线程等等,能够独立执行数据加载任务。
作为一种实施方式,数据加载装置从多个并行运行的数据加载线程中选出未运行的数据加载线程为目标线程,触发目标线程从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。其中,未运行的数据加载线程指当前处于空闲状态的数据加载线程,包括未执行过数据加载任务的数据加载线程,以及完成上一数据加载任务且还获取新数据加载任务的数据加载线程。
例如,数据加载装置使用多线程并行执行数据加载任务,各数据加载线程在执行完上一数据加载任务后,都可以各自作为目标线程分别从任务堆中抢夺调度权重最大的数据加载任务进行执行。从而使得各数据加载线程能够并行处理多个数据加载任务,优先处理整体耗费时间最长的数据加载任务链路,提升数据加载效率。
当然,数据加载装置也可以实时检测各数据加载线程的任务执行状态,当一数据加载线程执行完上一数据加载任务后,数据加载装置将其作为目标线程,从任务堆中获取调度权重最大的数据加载任务,并推送给此目标线程,由其执行以进行数据加载。
例如,图1c中,以任务堆中包括数据加载任务7、数据加载任务3和数据加载任务9等为例,若数据加载任务7的调度权重最大,则若有数据加载线程完成了上一数据加载任务,则作为目标线程优先抢夺数据加载任务7执行。在数据加载任务7完成后,若数据加载任务6的也已经完成执行,将数据加载任务10和数据加载任务11配置到任务堆中。若此时,数据加载任务11的调度权重比数据加载任务11的调度权重大,则若有数据加载线程完成了上一数据加载任务,就作为目标线程优先抢夺数据加载任务10执行。由此,实现了优先执行权重值最大也即花费时间最久的数据加载任务链路。而其他的数据加载任务则可以在执行花费时间最久的数据加载任务链路的同时执行,提高处理效率。
由此,完成全部的数据加载任务,实现待加载数据的全部加载。由于本实施例中每次都优先执行调度权重最大的数据加载任务,也即,优先执行花费时间最长的链路,其他的数据加载任务可以与其并行处理,不会延长其执行所需的时间,也不会导致其他任务完成后的等待,使得整体数据加载完成的时间更加贴近或等于最短时间,避免无谓的时间浪费,提升数据加载效率。
在一些实施例中,步骤104之后还可以包括:在数据加载任务完成后,更新其执行状态。
在数据加载任务完成后,数据加载装置将其执行状态更新为已完成,以便于根据执行状态检测其后继任务的全部前序任务是否都已完成执行,进而确定其后继任务是否可以配置到任务堆中等待执行。
由此,实现了数据加载任务的有序执行。
由上可知,本发明实施例中通过获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构,用以确定各数据加载任务的依赖关系和调取权重;然后,根据依赖拓扑结构,计算数据加载任务的调度权重,以确定数据加载任务的重要程度;若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中,等待执行;从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。该方案通过配置数据加载任务的依赖拓扑结构,理清数据加载任务的依赖关系,并且,依据数据加载任务的依赖拓扑结构计算其中各数据加载任务调度权重,以确定各数据加载任务的执行顺序。并且,在数据加载任务依赖的全部前序任务都已经完成执行后,再将其配置到任务堆中等待执行,从而便于采用时间最优化的贪心策略,使得每次执行的数据加载任务都是任务堆中调度权重最大的,实现最先执行耗时最久的数据加载任务链路,避免耗时短的任务链路完成后,还要等待其他数据链路的执行,造成加载时间的浪费。由此,该方案极大的提高了数据的加载速度,提升了数据加载效率,待加载数据文件数量的增加也不会明显延长数据加载整体耗费的时间。该方案将数据加载问题抽象转化成多机多任务的调度问题,将调度的粒度细化到单个任务,而不是整个关联的任务集合,对于复杂的数据依赖任何也能很好的支持,具有很强的灵活性和扩展性。
根据前面实施例描述的方法,以下将举例作进一步详细说明。
例如,参照图2,在本实施例中,将以该数据加载装置集成在终端中进行举例说明。如图2,该数据加载装置包括任务模块、调度模块和运算模块,如下:
(一)、任务模块;
任务模块用于注册数据加载任务。
其中,数据加载任务可以是根据待加载数据配置的,也可以是获取已配置好的数据加载任务,具体可根据实际需要灵活配置。
用户打开终端中应用软件主页或是推荐页面等,需要进行数据加载,则任务模块注册数据加载任务,并将数据加载任务对应的待加载数据信息发送给调度模块,待加载数据信息可以是待加载数据的属性信息。
(二)调度模块;
(1)、记录数据加载任务的状态信息;
具体地,调度模块接收任务模块发送的待加载数据的属性信息,记录对应的各数据加载任务的状态信息。
其中,属性信息包括待加载数据的名称、数据量、依赖的前序数据信息、自身的运行时间等,可以作为对应的数据加载任务的初始状态信息记录在调度模块中。并且,还可以将执行状态配置为未执行,记录在初始状态信息中。
依赖的前序数据信息指示了待加载数据依赖的数据情况,比如待加载数据可能没有依赖的前序数据,或是有依赖数据,依赖的前序数据可能有一个或多个。
(2)、构建依赖拓扑结构;
具体地,调度模块获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构。
具体地,调度模块接收任务模块发送的待加载数据的属性信息,获取其中的前序数据信息
然后,调度模块根据待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。数据加载任务的依赖拓扑结构指示了数据加载任务的前序任务和/或后继任务。
调度模块将数据加载任务的依赖拓扑结构发送给调度模块。
(3)、计算调度权重;
调度模块根据依赖拓扑结构,计算数据加载任务的调度权重。
具体地,调度模块根据依赖拓扑结构,确定数据加载任务是否有后继任务;若数据加载任务有后继任务,则获取后继任务的调度权重;若数据加载任务有多个后继任务,则在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
若数据加载任务有一个后继任务,则调度模块将其后继任务的调度权重作为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
若数据加载任务无后继任务,则调度模块根据数据加载任务自身的运行时间,配置数据加载任务的调度权重。
假设W表示数据加载任务集合,共有n个数据加载任务,对于第i个数据加载任务,cost[i]表示数据加载任务i自身的运行时间,W[i]表示数据加载任务i的调度权重,in_edge[i]表示数据加载任务i依赖的前驱任务未执行的总个数。Vi表示数据加载任务i所有后继任务的集合。
则,数据加载任务调度权重的算法逻辑可以如下:
W={W1,W2,……Wn},
其中,W[i]=max(W[j])+cost[i],Wj∈Vi。
而max(W[j])是指数据加载任务i全部后继任务的调度权重中,数值最大的调度权重。
由此,调度模块可以分别计算得到各数据加载任务的调度权重,并将各数据加载任务的调度权重发送给调度模块。
调度模块还用于接收调度模块发送的各数据加载任务的调度权重,将各数据加载任务的调度权重分别对应配置到各数据加载任务的状态信息中,或是使用各数据加载任务的调度权重分别对应替换掉各数据加载任务状态信息中自身的运行时间。
(4)、构建任务堆;
若数据加载任务依赖的全部前序任务都已完成执行,则调度模块将数据加载任务配置到任务堆中。
具体地,调度模块可以确定数据加载任务依赖的全部前序任务,获取全部前序任务的执行状态;若根据全部前序任务的执行状态确定全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
调度模块的算法逻辑可以如下:
Task v push into heap if in_edge[v]=0。
可理解为,若数据加载任务v依赖的全部前驱任务中未执行的总个数为0,则将数据加载任务v推入任务堆中。
(三)、运算模块。
运算模块从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
并且,运算模块在执行完数据加载任务后,向调度模块返回数据加载任务的执行信息,以更新数据加载任务的执行状态。
调度模块还用于在收到运算模块返回的数据加载任务的执行信息后,将其状态信息中的执行状态修改为已完成,更新数据加载任务的执行状态。
运算模块的算法逻辑可以如下:
取运算模块包括m个数据加载线程,线程合集为T,对于集合T中的t:
1、End theard t,if left_cnt=0;如果线程t已经完成当前数据加载任务,则结束线程;
2、Get task w from heap;从任务堆中取出调度权重最大的数据加载任务w;
3、Run w;执行数据加载任务w;
4、For every task v,in_edge[v]--,v∈Vw,push task v in heap,if in_edge[v]=0;在数据加载任务w执行时或完成后,更新其执行状态,并对于其每一个后继任务v,更新数据加载任务v的全部前驱任务中未执行的总个数,若数据加载任务v的全部前驱任务中未执行的总个数为0,就把数据加载任务v推入到任务堆中;
5、Go to 1。返回执行步骤1,如果线程t已经完成当前数据加载任务,则结束线程。
运算模块包括m个数据加载线程并行执行,相互独立各,线程每当执行完一个数据加载任务后,都会分别向终端抢夺当前任务堆中调度权重最大的数据加载任务进行执行。
由此,实现了应用软件数据的加载。
由上可知,本发明实施例中基于时间最优化的任务优先调度算法,将要执行的数据加载任务抽象为拓扑依赖结构,拓扑依赖结构中运行时间最久的数据加载任务链路即为最优的调度链路,因此,最先调度前部前序任务已完成且调度权重最大的数据加载任务,实现最先执行耗时最久的数据加载任务链路。并且,该方案实现了数据加载任务的并行调度和执行。由此,该方案极大的提高了数据的加载速度,提升了数据加载效率,待加载数据文件数量的增加也不会明显延长数据加载整体耗费的时间。并且,本发明实施例可以应用到需要进行数据加载的应用软件中,尤其是数据加载量大的应用软件中效果更佳显著。任何类型的数据加载操作都适用于本发明实施例中的数据加载装置,例如通过数据加载装置提供的数据加载接口接入待加载数据,由数据加载装置实现数据的加载,通用性强。
本发明实施例还提供一种数据加载装置,例如,如图3所示,该数据加载装置可以包括拓扑单元301、权重单元302、队列单元303和加载单元304,如下:
(一)、拓扑单元301;
拓扑单元301,用于获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构。
例如,在打开应用软件主页或是消息推荐页面时,拓扑单元301从数据库、服务器等获取需要加载的数据,作为待加载数据。一个待加载数据可以是一个待加载的数据文件,或是一个待加载的数据压缩包等,具体可根据实际需要灵活配置。
需要说明的是,可能有多个待加载数据,不同的待加载数据文件大小可能不同,而且,不同的待加载数据之间可能存在依赖关系。例如,一待加载数据的数据加载任务必须在另一或另外多个待加载数据加载完成后才能执行。
拓扑单元301整理各待加载数据之间的依赖关系,作为各待加载数据对应的数据加载任务之间的依赖关系,然后,拓扑单元301将数据加载任务之间的依赖关系转换为节点之间的连接关系,并画出对应的拓扑图,得到的拓扑图即包含了数据加载任务的依赖拓扑结构。
在一些实施例中,拓扑单元301可以具体用于:获取待加载数据的属性信息,属性信息指示了待加载数据依赖的前序数据信息;根据待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
例如,拓扑单元301提取待加载数据的属性信息。其中,属性信息中记载了待加载数据的名称、数据量、依赖的前序数据信息和/或完成加载的运行时间等。依赖的前序数据信息指示了待加载数据依赖的数据情况,比如待加载数据可能没有依赖的前序数据,或是有依赖数据,依赖的前序数据可能有一个或多个。需要说明的是,前序数据可以是其他的待加载数据。
其中,待加载数据依赖的前序数据,是指在加载此待加载数据之前,须加载完成的数据。对应的,此待加载数据也即其前序数据的后继数据,也即在前序数据加载完成后才能进行加载。另外,本实施例中以待加载数据依赖的前序数据是与待加载数据直接关联的数据进行举例说明。为便于实施,待加载数据前序数据的前序数据不再作为待加载数据的前序数据来考虑。例如,数据A依赖的前序数据为数据B,则数据A只能在数据B加载完成后才能进行加载,对应的,也可以说数据B为数据A的后继数据。
并且,拓扑单元301可以配置各待加载数据对应的数据加载任务,或是获取已经配置好的各待加载数据对应的数据加载任务。其中,各数据加载任务指示了对应的待加载数据,执行数据加载任务即可加载对应的待加载数据。
在得到各待加载数据的属性信息和对应的数据加载任务后,拓扑单元301可以根据各待加载数据依赖的前序数据信息,对应得到各数据加载任务依赖的前序任务信息。其中,执行一数据加载任务之前,须完成执行的其他数据加载任务即为此数据加载任务依赖的前序任务。对应的,此数据加载任务即为其前序任务的后继任务,也即在前驱任务执行完成后才能执行。数据加载任务可能有一个或多个前序任务。本实施例中,为便于实施,数据加载任务的前序任务的前序任务不再作为数据加载任务的前序任务来考虑。需要说明的是,即使将数据加载任务的前序任务的前序任务也作为数据加载任务的前序任务来考虑,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上可能会有改变之处,但不超出本发明的保护范围。
例如,数据A依赖的前序数据为数据B,则数据A对应的数据加载任务A只能在数据B对应的数据加载任务B执行完成后才能执行,对应的,也可以说数据加载任务B为数据加载任务A的后继任务。
然后,拓扑单元301可以将各数据加载任务抽象为一个个虚拟的节点,根据各数据加载任务的前序任务信息构建各节点之间的依赖关系,得到数据加载任务的依赖拓扑结构。
在一些实施例中,拓扑单元301具体可以用于将数据加载任务抽象为节点,根据数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;根据各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,依赖拓扑结构指示了数据加载任务的前序任务和/或后继任务。
拓扑单元301可以将各数据加载任务抽象为一个个虚拟的节点,并根据各数据加载任务依赖的前序任务信息确定各节点之间的依赖关系。其中,各节点之间的依赖关系也即各数据加载任务之间的依赖关系,包括了各数据加载任务的前序任务和/或后继任务。若数据加载任务无前序任务和/或后继任务,则对应的,将其前序任务和/或后继任务记为无。需要说明的是,各数据加载任务之间的依赖关系可以仅包括各数据加载任务的前序任务,由此,即可以反向得到各数据加载任务的后继任务。
然后,拓扑单元301根据各节点之间的依赖关系配置数据加载任务的依赖拓扑结构。各数据加载任务即为依赖拓扑结构中的各个节点,各节点之间可使用连线连接,依赖关系可以使用连线端点上的箭头表征。
数据加载任务的依赖拓扑结构也可以理解为多叉树的森林结构。其中,没有前序任务和后继任务的数据加载任务即为森林结构中的独立节点。有前序任务的数据加载任务可能有一个或多个前驱任务,并且,前驱任务可能也有其对应的前驱任务,因此,各数据加载任务对应的节点通过连线连接成为森林结构中多叉树。
由此,拓扑单元301配置得到数据加载任务的依赖拓扑结构。依赖拓扑结构指示了各数据加载任务的前序任务和/或后继任务。例如,依赖拓扑结构如图1c所示,其中,阿拉伯数字1、2、3和4等分别代表数据加载任务1、2、3和4等,图1c中共有14个数据加载任务。图1c中使用连线连接各节点,表征依赖关系,并使用箭头指示具体地依赖关系,箭头指向的数据加载任务依赖于连线另一端的数据加载任务。以数据加载任务7为例,其前序任务为数据加载任务1,后继任务包括数据加载任务10和数据加载任务11。
在另外一些实施例中,拓扑单元301在得到各待加载数据的属性信息后,可以根据各待加载数据依赖的前序数据信息,配置各待加载数据之间的依赖关系。其中,各待加载数据之间的依赖关系包括了各待加载数据的前序数据和/或后继数据。若待加载数据无前序数据和/或后继数据,则对应的,将其前序数据和/或后继数据记为无。需要说明的是,各待加载数据之间的依赖关系可以仅包括各待加载数据的前序数据,由此,即可以反向得到各待加载数据的后继数据。
然后,拓扑单元301将各个待加载数据抽象为一个个虚拟的节点,根据各待加载数据之间的依赖关系构建各节点之间的依赖关系,配置依赖拓扑结构。各数据加载任务即为依赖拓扑结构中的各个节点,各节点之间可使用连线连接,依赖关系可以使用连线端点上的箭头表征。
然后,拓扑单元301使用各待加载数据对应的数据加载任务,分别对应替换掉依赖拓扑结构中的各待加载数据,得到数据加载任务的依赖拓扑结构。
(二)、权重单元302;
权重单元302,用于根据依赖拓扑结构,计算数据加载任务的调度权重。
其中,数据加载任务的调度权重是指执行此数据加载任务自身耗费的资源及其后继任务耗费的资源总权重。耗费的资源可以包括时间和/或线程数量等等。
本实施例中,以一个数据加载线程单次执行单个数据加载任务,多个数据加载线程并行同时执行多个数据加载任务进行举例说明,并且,以耗费的资源为时间进行举例说明。
因此,权重单元302可以根据依赖拓扑结构,根据执行其中各数据加载任务耗费的时间,计算得到各数据加载任务的调度权重。例如,各数据加载任务的调度权重可以是其自身运行耗费的时间以及其全部后继任务耗费的时间之和。
在一些实施例中,权重单元302具体可以用于:根据依赖拓扑结构,确定数据加载任务是否有后继任务;若数据加载任务有后继任务,则获取后继任务的调度权重;根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重。
权重单元302可以根据依赖拓扑结构,查找数据加载任务是否有后继任务,若数据加载任务有后继任务,则获取后继任务的调度权重。需要说明的是,数据加载任务有多个后继任务,则权重单元302获取各后继任务的调度权重。
例如,在一些实施例中,步骤“根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重”可以包括:在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
步骤“根据依赖拓扑结构,确定数据加载任务是否有后继任务”之后还可以包括:若数据加载任务无后继任务,则根据数据加载任务自身的运行时间,配置数据加载任务的调度权重。
其中,数据加载任务自身的运行时间是指其被执行以加载数据时,能够完成数据加载的时间。可以通过以下几种方式获取:
例如,权重单元302从数据加载任务对应的待加载数据的属性信息中提取运行时间。
或者,权重单元302运行此数据加载任务,记录其完成数据加载的时间作为其自身的运行时间。
或者,权重单元302根据待加载数据的数据量大小,预估其对应的数据加载任务自身的运行时间。具体地,权重单元302可以获取待加载数据的数据量大小,然后根据预设的数据量级规则确定其对应的数据量等级。其中,预设的数据量等级规则可以根据数据量值将待加载数据划分为多个等级,不同的等级对应不同的数据量区间,若待加载数据的数据量值落入哪个数据量区间,则其数据量等级即为此数据量区间对应的数据量等级。然后,权重单元302将此数据量等级对应的预设时间作为此数据加载任务自身的运行时间。需要说明的是,各数据量等级预先配置有对应的预设时间,也即加载各数据量等级的数据大致所需的时间。
或者,权重单元302根据数据加载的历史记录,查询各数据加载任务自身的运行时间。其中,历史记录中记录了加载单元304已经执行过的各数据加载任务的运行时间,是由加载单元304在历次执行数据加载任务后记录得到的。
然后,若数据加载任务没有后继任务,则权重单元302将其自身的运行时间作为其调度权重。
若数据加载任务有一个后继任务,则权重单元302将其自身的运行时间加上其后继任务的运行时间,得到的数值即为此数据加载任务的调度权重。
若数据加载任务有多个后继任务,则权重单元302在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重,然后,将基础调度权重加上此数据加载任务自身的运行时间,得到的数值即为此数据加载任务的调度权重。由此,得到的调度权重即可理解为由此数据加载任务开始加载,依次加载其后继任务、后继任务的后继任务……直至不再有后继任务的一个或多个数据加载任务链路中,所需要花费时间最久的一条链路。也即,意味着全部数据加载完成的时间不小于此调度权重。
以图1c为例,权重单元302可以将没有后继任务的数据加载任务3、数据加载任务12、数据加载任务13和数据加载任务14自身的运行时间分别配置为其调度权重。然后,将数据加载任务14的调度权重作为基础调度值,加上数据加载任务11自身的运行时间,得到的数值作为数据加载任务11的调度权重。对于数据加载任务7,在其后继任务10和11的调度权重中选出数值最大的调度权重,作为基础调度权重,加上数据加载任务7自身的运行时间,得到的数值作为数据加载任务7的调度权重。以此类推,得到依赖拓扑结构中各节点的调度权重。
例如,若数据加载任务10的调度权重大于数据加载任务11,数据加载任务13的调度权重大于数据加载任务14,则可以确定执行数据加载任务链路7-10-13的时间大于链路7-10-14及链路7-11-14的时间。由于数据加载的依赖关系导致数据加载的先后顺序,由此,数据加载任务7根据数据加载任务10计算得到的调度权重,即为执行数据加载任务7及其之后的数据加载任务的多种方案中要花费的最久的时间,也是完成整个数据加载耗费的最短时间。
由此,权重单元302可得到各数据加载任务的调度权重。可以理解为,权重单元302从数据加载任务的依赖拓扑结构中最底层的、且没有后继任务的数据记载任务开始,根据其自身运行时间计算其调度权重,然后,根据其调度权重及其前序任务自身的运行时间,计算其前序任务的调度权重,再计算其前序任务的前序任务的调度权重,依次类推,得到依赖拓扑结构中各数据加载任务的调度权重。
由此,权重单元302计算得到了各数据加载任务的调度权重。
(三)、队列单元303;
队列单元303,用于若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
其中,任务堆用于存储待执行的数据加载任务。
队列单元303检测各数据加载任务的执行状态,若检测到一数据加载任务所依赖的全部前序任务都已经完成执行,则将其配置到任务堆中,等待执行,以加载对应的数据。
需要说明的是,若数据加载任务没有前序任务,则将其直接配置到任务堆中。
例如,图1c中,队列单元303可以直接将没有前序任务的数据加载任务1、数据加载任务2、数据加载任务3、数据加载任务4和数据加载任务5直接配置到任务堆中。若数据加载任务1完成执行,则可以将数据加载任务6和数据加载任务7配置到任务堆中。若数据加载任务1和数据加载任务2全部完成执行,则可以将数据加载任务8配置到任务堆中。
在一些实施例中,队列单元303具体可以用于:确定数据加载任务依赖的全部前序任务,获取全部前序任务的执行状态;若根据全部前序任务的执行状态确定全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
队列单元303可以根据数据加载任务的依赖拓扑结构,确定数据加载任务依赖的全部前序任务。或者,队列单元303根据待加载数据属性信息中指示的前序数据,确定数据加载任务依赖的全部前序任务。
然后,队列单元303获取全部前序任务的执行状态,例如,队列单元303可以监控数据加载线程执行的数据加载任务及执行状态,得知当前被执行的数据加载任务,并在当前被执行的数据加载任务完成后将此数据加载任务的执行状态配置为已完成。若数据加载任务还未被执行,则将其执行状态配置为未执行。由此,数据加载装置得到了各数据加载任务的执行状态,并实时更新各数据加载任务的执行状态。
若队列单元303检测到一数据加载任务的全部前序任务的执行状态都已经更新为已完成,则确定此数据加载任务所依赖的前序数据都已经完成加载,此数据加载任务可以执行,队列单元303将数据加载任务配置到任务堆中。
(四)、加载单元304;
加载单元304,用于从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
其中,任务堆中可能有多个待执行的数据加载任务。
加载单元304可以使用多个数据加载线程并行执行各数据加载任务。数据加载线程可以是服务器中独立运行的CPU、独立的线程等等,能够独立执行数据加载任务。
作为一种实施方式,加载单元304从多个并行运行的数据加载线程中选出未运行的数据加载线程为目标线程,触发目标线程从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。其中,未运行的数据加载线程指当前处于空闲状态的数据加载线程,包括未执行过数据加载任务的数据加载线程,以及完成上一数据加载任务且还获取新数据加载任务的数据加载线程。
例如,加载单元304使用多线程并行执行数据加载任务,各数据加载线程在执行完上一数据加载任务后,都可以各自作为目标线程分别从任务堆中抢夺调度权重最大的数据加载任务进行执行。从而使得各数据加载线程能够并行处理多个数据加载任务,优先处理整体耗费时间最长的数据加载任务链路,提升数据加载效率。
当然,加载单元304也可以实时检测各数据加载线程的任务执行状态,当一数据加载线程执行完上一数据加载任务后,加载单元304将其作为目标线程,从任务堆中获取调度权重最大的数据加载任务,并推送给此目标线程,由其执行以进行数据加载。
作为另外一种实施方式,加载单元304包括多个加载子单元,各加载子单元用于在进入空闲状态时,分别从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
具体地,各加载子单元为并行、独立的子单元,用于分别执行数据加载任务,进行数据加载。由于各数据加载任务对应的待加载数据数据量大小可能不一致,因此,各加载子单元执行数据加载任务花费的时间也可能不同。每当一数据加载子单元进入空闲状态时,都可以主动从任务堆中取出调度权重最大的数据加载任务进行执行。数据加载子单元进入空闲状态是指数据加载子单元当前没有执行数据加载任务,例如刚结束上一数据加载任务。
例如,图1c中,以任务堆中包括数据加载任务7、数据加载任务3和数据加载任务9等为例,若数据加载任务7的调度权重最大,则若有数据加载线程完成了上一数据加载任务,则作为目标线程优先抢夺数据加载任务7执行。在数据加载任务7完成后,若数据加载任务6的也已经完成执行,将数据加载任务10和数据加载任务11配置到任务堆中。若此时,数据加载任务11的调度权重比数据加载任务11的调度权重大,则若有数据加载线程完成了上一数据加载任务,就作为目标线程优先抢夺数据加载任务10执行。由此,实现了优先执行权重值最大也即花费时间最久的数据加载任务链路。而其他的数据加载任务则可以在执行花费时间最久的数据加载任务链路的同时执行,提高处理效率。
由此,完成全部的数据加载任务,实现待加载数据的全部加载。由于本实施例中每次都优先执行调度权重最大的数据加载任务,也即,优先执行花费时间最长的链路,其他的数据加载任务可以与其并行处理,不会延长其执行所需的时间,也不会导致其他任务完成后的等待,使得整体数据加载完成的时间更加贴近或等于最短时间,避免无谓的时间浪费,提升数据加载效率。
此外,在一些实施例中,加载单元304还可以用于:在数据加载任务完成后,更新其执行状态。
在数据加载任务完成后,加载单元304将其执行状态更新为已完成,以便于队列单元303根据执行状态检测其后继任务的全部前序任务是否都已完成执行,进而确定其后继任务是否可以配置到任务堆中等待执行。
由此,实现了数据加载任务的有序执行。
由上可知,本发明实施例中通过拓扑单元301获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构,用以确定各数据加载任务的依赖关系和调取权重;然后,权重单元302根据依赖拓扑结构,计算数据加载任务的调度权重,以确定数据加载任务的重要程度;若数据加载任务依赖的全部前序任务都已完成执行,则队列单元303将数据加载任务配置到任务堆中,等待执行;加载单元304从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。该方案通过配置数据加载任务的依赖拓扑结构,理清数据加载任务的依赖关系,并且,依据数据加载任务的依赖拓扑结构计算其中各数据加载任务调度权重,以确定各数据加载任务的执行顺序。并且,在数据加载任务依赖的全部前序任务都已经完成执行后,再将其配置到任务堆中等待执行,从而便于采用时间最优化的贪心策略,使得每次执行的数据加载任务都是任务堆中调度权重最大的,实现最先执行耗时最久的数据加载任务链路,避免耗时短的任务链路完成后,还要等待其他数据链路的执行,造成加载时间的浪费。由此,该方案极大的提高了数据的加载速度,提升了数据加载效率,待加载数据文件数量的增加也不会明显延长数据加载整体耗费的时间。该方案将数据加载问题抽象转化成多机多任务的调度问题,将调度的粒度细化到单个任务,而不是整个关联的任务集合,对于复杂的数据依赖任何也能很好的支持,具有很强的灵活性和扩展性。
相应的,本发明实施例还提供一种终端,如图4所示,该终端可以包括射频(RF,Radio Frequency)电路401、包括有一个或一个以上计算机可读存储介质的存储器402、输入单元403、显示单元404、传感器405、音频电路406、无线保真(WiFi,Wireless Fidelity)模块407、包括有一个或者一个以上处理核心的处理器408、以及电源409等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路401可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器408处理;另外,将涉及上行的数据发送给基站。通常,RF电路401包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路401还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器402可用于存储软件程序以及模块,处理器408通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器408和输入单元403对存储器402的访问。
输入单元403可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体地实施例中,输入单元403可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器408,并能接收处理器408发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元403还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元404可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元404可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器408以确定触摸事件的类型,随后处理器408根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图4中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器405,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路406、扬声器,传声器可提供用户与终端之间的音频接口。音频电路406可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路406接收后转换为音频数据,再将音频数据输出处理器408处理后,经RF电路401以发送给比如另一终端,或者将音频数据输出至存储器402以便进一步处理。音频电路406还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块407可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块407,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器408是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器408可包括一个或多个处理核心;优选的,处理器408可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器408中。
终端还包括给各个部件供电的电源409(比如电池),优选的,电源可以通过电源管理系统与处理器408逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源409还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器408会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器408来运行存储在存储器402中的应用程序,从而实现各种功能:
获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构;
根据依赖拓扑结构,计算数据加载任务的调度权重;
若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中;
从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
获取待加载数据的属性信息,属性信息指示了待加载数据依赖的前序数据信息;根据待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
将数据加载任务抽象为节点,根据数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;根据各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,依赖拓扑结构指示了数据加载任务的前序任务和/或后继任务。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
根据依赖拓扑结构,确定数据加载任务是否有后继任务;若数据加载任务有后继任务,则获取后继任务的调度权重;根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重。
数据加载任务有多个后继任务,处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
若数据加载任务无后继任务,则根据数据加载任务自身的运行时间,配置数据加载任务的调度权重。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
确定数据加载任务依赖的全部前序任务,获取全部前序任务的执行状态;若根据全部前序任务的执行状态确定全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
处理器408还可以运行存储在存储器402中的应用程序,实现如下功能:
在数据加载任务完成后,更新其执行状态。
以上各个操作的具体实施可参见前面的数据加载方法实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种虚拟资源的转移方法中的步骤。例如,该指令可以执行如下步骤:
获取待加载数据的属性信息,根据属性信息构建数据加载任务的依赖拓扑结构;
根据依赖拓扑结构,计算数据加载任务的调度权重;
若数据加载任务依赖的全部前序任务都已完成执行,则将数据加载任务配置到任务堆中;
从任务堆中获取调度权重最大的数据加载任务并执行,以加载待加载数据。
该指令还可以执行如下步骤:
获取待加载数据的属性信息,属性信息指示了待加载数据依赖的前序数据信息;根据待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;根据数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
该指令还可以执行如下步骤:
将数据加载任务抽象为节点,根据数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;根据各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,依赖拓扑结构指示了数据加载任务的前序任务和/或后继任务。
该指令还可以执行如下步骤:
根据依赖拓扑结构,确定数据加载任务是否有后继任务;若数据加载任务有后继任务,则获取后继任务的调度权重;根据后继任务的调度权重及数据加载任务自身的运行时间,计算数据加载任务的调度权重。
数据加载任务有多个后继任务,该指令还可以执行如下步骤:
在多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;将基础调度权重加上数据加载任务自身的运行时间,得到数据加载任务的调度权重。
该指令还可以执行如下步骤:
若数据加载任务无后继任务,则根据数据加载任务自身的运行时间,配置数据加载任务的调度权重。
该指令还可以执行如下步骤:
确定数据加载任务依赖的全部前序任务,获取全部前序任务的执行状态;
若根据全部前序任务的执行状态确定全部前序任务都已完成执行,则将数据加载任务配置到任务堆中。
该指令还可以执行如下步骤:
在数据加载任务完成后,更新其执行状态。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据加载方法中的步骤,因此,可以实现本发明实施例所提供的任一种数据加载方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种数据加载方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据加载方法,其特征在于,包括:
获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构;
根据所述依赖拓扑结构,计算数据加载任务的调度权重;
若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中;
从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据。
2.如权利要求1所述的方法,其特征在于,所述获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构,包括:
获取待加载数据的属性信息,所述属性信息指示了待加载数据依赖的前序数据信息;
根据所述待加载数据依赖的前序数据信息,确定其对应的数据加载任务所依赖的前序任务信息;
根据所述数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构。
3.如权利要求2所述的方法,其特征在于,所述根据所述数据加载任务依赖的前序任务信息,配置数据加载任务的依赖拓扑结构,包括:
将所述数据加载任务抽象为节点,根据所述数据加载任务依赖的前序任务信息确定各节点之间的依赖关系;
根据所述各节点之间的依赖关系,配置数据加载任务的依赖拓扑结构,其中,所述依赖拓扑结构指示了所述数据加载任务的前序任务和/或后继任务。
4.如权利要求1所述的方法,其特征在于,所述根据所述依赖拓扑结构,计算数据加载任务的调度权重,包括:
根据所述依赖拓扑结构,确定所述数据加载任务是否有后继任务;
若所述数据加载任务有后继任务,则获取所述后继任务的调度权重;
根据所述后继任务的调度权重及所述数据加载任务自身的运行时间,计算所述数据加载任务的调度权重。
5.如权利要求4所述的方法,其特征在于,所述数据加载任务有多个后继任务,所述根据所述后继任务的调度权重及所述数据加载任务自身的运行时间,计算所述数据加载任务的调度权重,包括:
在所述多个后继任务的调度权重中筛选出数值最大的调度权重,为基础调度权重;
将所述基础调度权重加上所述数据加载任务自身的运行时间,得到所述数据加载任务的调度权重。
6.如权利要求4所述的方法,其特征在于,所述根据所述依赖拓扑结构,确定所述数据加载任务是否有后继任务,之后还包括:
若所述数据加载任务无后继任务,则根据所述数据加载任务自身的运行时间,配置所述数据加载任务的调度权重。
7.如权利要求1-6任一项所述的方法,其特征在于,所述若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中,包括:
确定所述数据加载任务依赖的全部前序任务,获取所述全部前序任务的执行状态;
若根据所述全部前序任务的执行状态确定所述全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中。
8.如权利要求7所述的方法,其特征在于,所述从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据,之后还包括:
在所述数据加载任务完成后,更新其执行状态。
9.一种数据加载装置,其特征在于,包括:
拓扑单元,用于获取待加载数据的属性信息,根据所述属性信息构建数据加载任务的依赖拓扑结构;
权重单元,用于根据所述依赖拓扑结构,计算数据加载任务的调度权重;
队列单元,用于若所述数据加载任务依赖的全部前序任务都已完成执行,则将所述数据加载任务配置到任务堆中;
加载单元,用于从所述任务堆中获取调度权重最大的数据加载任务并执行,以加载所述待加载数据。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的数据加载方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810929960.4A CN109062680A (zh) | 2018-08-15 | 2018-08-15 | 一种数据加载方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810929960.4A CN109062680A (zh) | 2018-08-15 | 2018-08-15 | 一种数据加载方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109062680A true CN109062680A (zh) | 2018-12-21 |
Family
ID=64686158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810929960.4A Pending CN109062680A (zh) | 2018-08-15 | 2018-08-15 | 一种数据加载方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062680A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110380895A (zh) * | 2019-07-02 | 2019-10-25 | 迈普通信技术股份有限公司 | 一种节点批量部署的方法、设备和系统 |
CN110928653A (zh) * | 2019-10-24 | 2020-03-27 | 浙江大搜车软件技术有限公司 | 跨集群任务的执行方法、装置、计算机设备和存储介质 |
CN112052048A (zh) * | 2020-08-07 | 2020-12-08 | 深圳市欢太科技有限公司 | 数据加载方法及装置、设备、存储介质 |
CN112148491A (zh) * | 2020-09-27 | 2020-12-29 | 京东数字科技控股股份有限公司 | 数据处理方法及装置 |
CN112181517A (zh) * | 2020-09-24 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 一种应用软件的启动方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473134A (zh) * | 2013-09-23 | 2013-12-25 | 哈尔滨工程大学 | 一种异构多核处理器的依赖任务调度方法 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
US9286106B1 (en) * | 2013-04-16 | 2016-03-15 | Ca, Inc. | Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set |
US20170371706A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
CN107748696A (zh) * | 2017-09-20 | 2018-03-02 | 上海壹账通金融科技有限公司 | 一种任务调度的方法及终端设备 |
-
2018
- 2018-08-15 CN CN201810929960.4A patent/CN109062680A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286106B1 (en) * | 2013-04-16 | 2016-03-15 | Ca, Inc. | Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set |
CN103473134A (zh) * | 2013-09-23 | 2013-12-25 | 哈尔滨工程大学 | 一种异构多核处理器的依赖任务调度方法 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
US20170371706A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
CN107748696A (zh) * | 2017-09-20 | 2018-03-02 | 上海壹账通金融科技有限公司 | 一种任务调度的方法及终端设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110380895A (zh) * | 2019-07-02 | 2019-10-25 | 迈普通信技术股份有限公司 | 一种节点批量部署的方法、设备和系统 |
CN110380895B (zh) * | 2019-07-02 | 2022-02-22 | 迈普通信技术股份有限公司 | 一种节点批量部署的方法、设备和系统 |
CN110928653A (zh) * | 2019-10-24 | 2020-03-27 | 浙江大搜车软件技术有限公司 | 跨集群任务的执行方法、装置、计算机设备和存储介质 |
CN112052048A (zh) * | 2020-08-07 | 2020-12-08 | 深圳市欢太科技有限公司 | 数据加载方法及装置、设备、存储介质 |
CN112052048B (zh) * | 2020-08-07 | 2024-07-02 | 深圳市欢太科技有限公司 | 数据加载方法及装置、设备、存储介质 |
CN112181517A (zh) * | 2020-09-24 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 一种应用软件的启动方法、装置、设备和介质 |
CN112148491A (zh) * | 2020-09-27 | 2020-12-29 | 京东数字科技控股股份有限公司 | 数据处理方法及装置 |
CN112148491B (zh) * | 2020-09-27 | 2023-12-05 | 京东科技控股股份有限公司 | 数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062680A (zh) | 一种数据加载方法、装置和存储介质 | |
CN104615453B (zh) | 一种地图数据处理方法、装置及系统 | |
CN107092520B (zh) | 应用程序的推荐方法、装置、存储介质及移动终端 | |
CN104112213B (zh) | 推荐信息的方法及装置 | |
WO2018120813A1 (zh) | 一种智能推荐方法和终端 | |
EP3333733B1 (en) | Method and device for use in parallel execution of terminal database | |
CN106708554B (zh) | 程序运行方法及装置 | |
CN107181651A (zh) | 智能家居设备配置方法及装置 | |
CN106371900A (zh) | 一种实现异步调用的数据处理方法及装置 | |
CN104142868B (zh) | 建立连接的方法及装置 | |
CN109992400A (zh) | 资源分配方法、装置、移动终端及计算机可读存储介质 | |
CN106020962B (zh) | 一种进程控制方法及终端设备 | |
CN104363988B (zh) | 一种多核处理器的管理方法及装置 | |
WO2015058646A1 (zh) | 队列消息的处理方法、控制消息进入队列的方法及装置 | |
CN107368400A (zh) | Cpu监测方法、装置、计算机可读存储介质和移动终端 | |
CN104346367B (zh) | 一种数据集成的方法和装置 | |
CN105740145B (zh) | 定位控件中的元素的方法及装置 | |
CN105303427A (zh) | 物品交换方法和装置 | |
CN105868319B (zh) | 网页加载方法及装置 | |
CN107040610A (zh) | 数据同步方法、装置、存储介质、终端以及服务器 | |
CN106484882A (zh) | 一种数据库连接池的管理方法和装置 | |
CN109067981A (zh) | 分屏应用切换方法、装置、存储介质和电子设备 | |
CN107153576A (zh) | 一种内存资源的分配方法及终端设备 | |
CN106919458A (zh) | Hook目标内核函数的方法及装置 | |
CN106713608A (zh) | 应用的功能状态修改方法、装置及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181221 |
|
RJ01 | Rejection of invention patent application after publication |