CN115437757A - 调度方法、系统、服务器和计算机可读存储介质 - Google Patents

调度方法、系统、服务器和计算机可读存储介质 Download PDF

Info

Publication number
CN115437757A
CN115437757A CN202110624609.6A CN202110624609A CN115437757A CN 115437757 A CN115437757 A CN 115437757A CN 202110624609 A CN202110624609 A CN 202110624609A CN 115437757 A CN115437757 A CN 115437757A
Authority
CN
China
Prior art keywords
task
scheduled
parent
tasks
newly
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
Application number
CN202110624609.6A
Other languages
English (en)
Inventor
赵绍航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN202110624609.6A priority Critical patent/CN115437757A/zh
Priority to PCT/CN2022/095893 priority patent/WO2022253165A1/zh
Publication of CN115437757A publication Critical patent/CN115437757A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例涉及计算机技术领域,特别涉及一种调度方法、系统、服务器和计算机可读存储介质。上述调度方法包括:获取各待调度任务的信息;其中,所述各待调度任务的信息包括各待调度任务的父子关系;根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树;根据所述多叉树,对所述各待调度任务进行调度。本发明实施例提供的调度方法,旨在高效地、准确地对各待调度任务进行调度,降低调度资源的开销,无需提升硬件设备性能,避免支付高昂的硬件设备的后期维护成本。

Description

调度方法、系统、服务器和计算机可读存储介质
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种调度方法、系统、服务器和计算机可读存储介质。
背景技术
调度技术一直被广泛的应用于空间环境、物流配送、生产排班、商业服务等领域。在计算机技术领域中,同样存在着计算资源的调度问题。随着大数据技术的飞速发展,计算需求变得越来越复杂和繁重。在数据仓库中会有非常多的计算任务。相关技术中,大多依据任务执行状态表或以往的调度策略进行调度。
然而,数据仓库中的任务是不断更新、动态增减的,依据先验知识形成的任务执行状态表,以及以往的调度策略,很可能不适用于新的任务调度,这都会导致调度准确性差,调度不稳定,调度效率不高,对此只能提升硬件的设备性能来支持任务正常进行,增加了投入成本和硬件设备的后期维护成本。
发明内容
本申请实施例的主要目的在于提出一种调度方法、系统、服务器和计算机可读存储介质。旨在高效地、准确地对各待调度任务进行调度,降低调度资源的开销,无需提升硬件设备性能,避免支付高昂的硬件设备的后期维护成本。
为实现上述目的,本申请实施例提供了一种调度方法,所述方法包括:获取各待调度任务的信息;其中,所述各待调度任务的信息包括各待调度任务的父子关系;根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树;根据所述多叉树,对所述各待调度任务进行调度。
为实现上述目的,本申请实施例还提供一种调度系统,所述系统包括数据库、调度器和计算器;所述数据库分别与所述调度器和所述计算器连接,所述调度器还与所述计算器连接;所述数据库用于存储各待调度任务和所述各待调度任务的信息,其中,所述各待调度任务的信息包括各待调度任务之间的父子关系;所述调度器用于从所述数据库中获取所述各待调度任务的信息,根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树;所述计算器用于从所述数据库获取所述各待调度任务,根据所述多叉树,对所述各待调度任务进行调度。
为实现上述目的,本申请实施例还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的调度方法。
为实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的调度方法。
本申请提出的调度方法、系统、服务器和计算机可读存储介质,获取各待调度任务的信息;其中,所述各待调度任务的信息包括各待调度任务之间的父子关系;根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树,多叉树可以将各待调度任务之间的多维生动、形象地展现出来,从而快速、清晰、科学、准确地理清所有待调度任务之间的依赖关系和串行关系。根据所述各待调度任务的多叉树,对所述各待调度任务进行调度,考虑到相关的调度技术只是在以往的调度策略基础上进行调度,不能很好地适用如今不断发生变化的任务,导致调度准确性很差,从而导致任务出错,本发明的实施例,通过获取各待调度任务的多叉树并根据多叉树进行调度的方式,可以高效地、准确地对各待调度任务进行调度,降低了调度资源的开销,无需提升硬件设备性能,避免支付高昂的硬件设备的后期维护成本。
附图说明
图1是根据本发明一个实施例的调度方法的流程图一;
图2是根据本发明一个实施例中,根据各待调度任务和父子关系,获取各待调度任务的多叉树的流程图;
图3是根据本发明一个实施例中提供的一种各待调度任务的多叉树的示意图一;
图4是根据本发明一个实施例中,根据多叉树,对各待调度任务进行调度的流程图;
图5是根据本发明另一个实施例的调度方法的流程图二;
图6是根据本发明另一个实施例中提供的一种各待调度任务的多叉树示意图二;
图7是根据本发明另一个实施例中提供的一种根据新增的待调度任务,更新多叉树的流程图;
图8是根据本发明另一个实施例中提供的一种各待调度任务的多叉树示意图三;
图9是根据本发明另一个实施例中提供的一种根据需要修改父任务的任务,更新多叉树的流程图;
图10是根据本发明另一个实施例中提供的一种各待调度任务的多叉树示意图四;
图11是根据本发明另一个实施例的调度系统的结构示意图;
图12是根据本发明另一个实施例中,计算器的具体结构示意图
图13是根据本发明另一个实施例的服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的一个实施例涉及一种调度方法,应用于服务器。下面对本实施例的调度方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本发明的实施例的应用场景可以包括但不限于:在数据仓库中进行计算机计算任务的调度;在物流车间进行物流货物分拣任务的调度;在外卖平台中进行骑手送餐任务的调度;在公司、工厂中进行生产排班任务的调度;在快递平台中进行快递员送快递任务的调度等。
本实施例的调度方法的具体流程可以如图1所示,包括:
步骤101,获取各待调度任务的信息。
具体而言,服务器在进行调度之前,可以先获取各待调度任务的信息。其中,各待调度任务的信息包括各待调度任务之间的父子关系。
在具体实现中,各待调度任务的信息还可以包括但不限于:任务的身份标识号(Identity document,简称:ID),任务的父任务ID,任务的有效期,任务执行状态,任务开始时间和任务结束时间等。
在一个例子中,服务器确定待调度任务包括任务A、任务B、任务E、任务G和任务J,其中,任务A和任务B不需要依赖任何任务的结果即可执行,任务E需要依赖任务A的结果才可以执行,任务G需要依赖任务B的结果才可以执行,任务J需要依赖任务E的结果才可以执行,服务器确定任务A、任务B没有父任务,任务E的父任务为任务A,任务G的父任务为任务B,任务J的父任务为任务E。
在一个例子中,待调度任务为数据仓库中的所有任务,服务器可以对所有待调度任务,按照任务目标进行分层,比如备份数据层任务,计算数据元层任务等。服务器可以对分层后的任务进行分析和特征属性提取,获取各待调度任务的信息。考虑到一个任务可能存在多个父任务,只有父任务所在层的任务都执行完成后,才能执行该任务,对待调度任务按照任务目标进行分层,可以进一步提升调度的准确性。
在另一个例子中,各待调度任务的信息包括各待调度任务的有效期,服务器在获取到各待调度任务的有效期后,可以根据各待调度任务的有效期,判断各待调度任务中是否有超期的待调度任务,若各待调度任务中有超期的待调度任务,丢弃超期的待调度任务。超期任务及时删除丢弃,不再参与多叉树的构建,可以进一步节约计算资源,减少计算量。
步骤102,根据各待调度任务和父子关系,获取各待调度任的多叉树。
在具体实现中,服务器在获取到各待调度任务的信息后,可以根据根据各待调度任务,和各待调度任务的信息中的各待调度任务的父子关系,获取各待调度任务的多叉树。本发明的实施例,通过构建多叉树的方式,可以将各待调度任务之间的多维生动、形象地展现出来,从而快速、清晰、科学、准确地理清所有待调度任务之间的依赖关系和串行关系。
在一个例子中,服务器可以将所有没有父任务的待调度任务都作为根节点,再根据父子关系填入子节点,获取多个多叉树。比如:任务A、任务B没有父任务,任务E和任务F的父任务为任务A,任务G的父任务为任务B,任务J的父任务为任务E,服务器将任务A、任务E、任务F和任务J作为第一个多叉树,将任务B和任务G作为第二个多叉树。
在另一个例子中,根据各待调度任务和父子关系,获取各待调度任务的多叉树,可以由如图2所示的各子步骤实现,具体包括:
子步骤1021,将各待调度任务中没有父任务的待调度任务,作为各待调度任务的多叉树的一级子节点。
在具体实现中,服务器对所有待调度任务只构建一个多叉树,默认将Tree作为多叉树的根节点,或设置一个空的节点作为根节点,再将各待调度任务中没有父任务的待调度任务,作为该根节点的一级子节点。只构建一个多叉树,可以更好地展现各待调度任务之间的多维关系。
在一个例子中,服务器将将Tree作为多叉树的根节点,服务器确定待调度任务包括任务A、任务B、任务C、任务D、任务E、任务F、任务G、任务H、任务I、任务J、任务K和任务L。其中,任务A、任务B、任务C和任务D没有父任务,服务器将任务A、任务B、任务C和任务D作为根节点Tree的四个一级子节点。
子步骤1022,将各待调度任务中有父任务的待调度任务,作为父任务所在节点的子节点,得到各待调度任务的多叉树。
具体而言,服务器在获取完各待调度任务的多叉树的各一级子节点后,可以将各待调度任务中有父任务的待调度任务,根据父子关系,作为父任务所在节点的子节点,即一级子节点下的各级子节点,得到各待调度任务的多叉树。本发明的实施例,可以更加快速地生成多叉树,从而更快速地理清所有待调度任务之间的依赖关系和串行关系。
在一个例子中,服务器确定待调度任务包括任务A、任务B、任务C、任务D、任务E、任务F、任务G、任务H、任务I、任务J、任务K和任务L,任务A、任务B、任务C和任务D没有父任务,任务A为任务E和任务F的父任务,任务B为任务G的父任务,任务C为任务H和任务I的父任务,任务E为任务I、任务K和任务L的父任务。服务器将Tree作为多叉树的根节点,将任务A、任务B、任务C和任务D作为根节点Tree的四个一级子节点,将任务E和任务F作为任务A的子节点(即二级子节点),将任务G作为任务B的子节点(即二级子节点),任务H和任务I作为任务C的子节点(即二级子节点),将任务J、任务K和任务L作为任务E的子节点(即三级子节点),得到各待调度任务的多叉树,各待调度任务的多叉树可以如图3所示。
步骤103,根据多叉树,对各待调度任务进行调度。
在一个例子中,根据多叉树,对各待调度任务进行调度,可以由如图4所示的各子步骤实现,具体包括:
子步骤1031,根据多叉树,确定各待调度任务中需要进行同一串行运行的任务。
具体而言,服务器在获取各待调度任务的多叉树后,可以根据多叉树,确定各待调度任务中需要进行同一串行运行的任务。
在一个例子中,服务器在获取各待调度任务的多叉树后,可以对多叉树进行广度遍历,确定各待调度任务中需要进行同一串行运行的任务。广度遍历所需的遍历深度较小,花费的遍历资源少,时间短,便于快速确定出需要进行同一串行运行的任务。
比如,各待调度任务的多叉树如图3所示,服务器对多叉树进行广度遍历,遍历顺序为:AB→C→D→E→F→G→H→I→J→K→L。其中,节点A为一级子节点,节点E和节点F未节点A的子节点,节点J、节点K和节点L为节点E的子节点,服务器确定节点A、节点E、节点F、节点J、节点K和节点L(即任务A、任务E、任务F、任务J、任务K和任务L)为需要进行同一串行运行的任务;节点B为一级子节点,节点G为节点B的子节点,服务器确定节点B和节点G(即任务B和任务G)为需要进行同一串行运行的任务;节点C为一级子节点,节点H和节点I为节点C的子节点,节点H和节点I下面没有其他子节点,服务器确定节点C、节点H和节点I(即任务C、任务H和任务I)为需要进行同一串行运行的任务;节点D为一级子节点,节点D没有子节点,服务器确认节点D(即任务D)为需要进行同一串行运行的任务。
子步骤1032,将需要进行同一串行运行的任务放入同一个线程中,并将所有线程压入线程池。
具体而言,服务器确定完需要进行同一串行运行的任务后,将需要进行同一串行运行的任务放入同一个线程中,并将所有线程压入线程池。将需要进行同一串行运行的任务放入同一个线程中,可以使得调度更加准确、稳定。
在一个例子中,各待调度任务的多叉树如图3所示,服务器确认任务A、任务E、任务F、任务J、任务K和任务L为需要进行同一串行运行的任务,服务器将任务A、任务E、任务F、任务J、任务K和任务L放入一号线程;任务B和任务G为需要进行同一串行运行的任务,服务器将任务B和任务G放入二号线程;任务C、任务H和任务I为需要进行同一串行运行的任务,服务器将任务C、任务H和任务I放入三号线程;任务D为需要进行同一串行运行的任务,服务器将任务D放入四号线程,并将这四个线程压入线程池中。
在具体实现中,服务器可以先添加完所有一级子节点,再添加一级子节点下的各级子节点,也可以添加完一个一级子节点后,直接添加该一级子节点下的各级子节点,本发明的实施例对此不做具体限定。
步骤1033,运行线程池中的线程。
具体而言,服务器将所有线程压入线程池后,可以指示计算器运行线程池中的所有线程,进行。多线程同时运行,由于每个线程中的任务都是需要进行同一串行运行的任务,各线程之间几乎不会发生冲突,最大限度地保证所有任务能够正常执行。
本实施例,获取各待调度任务的信息;其中,所述各待调度任务的信息包括各待调度任务之间的父子关系;根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树,多叉树可以将各待调度任务之间的多维生动、形象地展现出来,从而快速、清晰、科学、准确地理清所有待调度任务之间的依赖关系和串行关系。根据所述各待调度任务的多叉树,对所述各待调度任务进行调度,考虑到相关的调度技术只是在以往的调度策略基础上进行调度,不能很好地适用如今不断发生变化的任务,导致调度准确性很差,从而导致任务出错,本发明的实施例,通过获取各待调度任务的多叉树并根据多叉树进行调度的方式,可以高效地、准确地对各待调度任务进行调度,降低了调度资源的开销,无需提升硬件设备性能,避免支付高昂的硬件设备的后期维护成本。
本发明的另一个实施例涉及一种调度方法,下面对本实施例的调度方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,图5是本实施例所述的调度方法,包括:
步骤201,获取各待调度任务的信息。
步骤202,根据各待调度任务和父子关系,获取各待调度信息的多叉树。
步骤203,根据多叉树,对各待调度任务进行调度。
其中,步骤201至步骤203与步骤101至步骤103大致相同,此处不再赘述。
步骤204,确定需要进行修复的任务。
具体而言,服务器在对各待调度任务进行调度后,可以确定需要进行修复的任务,其中,需要进行修复的任务包括运行失败的任务,和/或,运行结果不符合预设标准的任务。
在一个例子中,服务器在对各待调度任务进行调度,即运行各任务后,可以检测是否有调度错误,即判断是否有运行失败的任务,若有运行失败的任务,服务器将运行失败的任务作为需要进行修复的任务。
在另一个例子中,服务器在对各待调度任务进行调度,即运行各任务后,可以判断各任务的运行结果是否符合预设标准,若有运行结果不符合预设标准的任务,服务器将运行结果不符合预设标准的任务作为需要进行修复的任务。其中,预设标准可以由本领域的技术人员根据实际需求进行设定,本发明的实施例对此不做具体限定。
在一个例子中,服务器可以实时获取本领域的技术人员上传的修复信息,修复信息中包括本领域的技术人员认为需要进行修复的任务。
步骤205,根据多叉树,确定包含需要进行修复的任务的子路径。
具体而言,服务器在确定需要进行修复的任务后,进入数据修复流程,可以在多叉树中确定包含需要进行修复的任务的子路径。
在一个例子中,待调度任务是数据仓库中的任务。服务器在确定需要进行修复的任务后,可以在数据仓库的任务信息表中增添一个用于表征进入数据修复流程的标识,服务器可以根据该标识进入数据修复流程。
在一个例子中,服务器在确定需要进行修复的任务后,可以对多叉树进行深度遍历,确定包含需要进行修复的任务的子路径。如图6所示,深度遍历的顺序为:M→P→Q→U→V→N→R→O→S→T→W。使用深度遍历的方法,可以更加准确地找到包含需要进行修复的任务的子路径。
在一个例子中,各待调度任务的多叉树如图6所示,服务器确定任务U运行失败,将任务U作为需要进行修复的任务,服务器对多叉树进行深度遍历,确定任务U(节点U)所在的子路径为:MQU。
在另一个例子中,各待调度任务的多叉树如图6所示,服务器确定任务T的运行结果不符合预设标准,将任务T作为需要进行修复的任务,服务器对多叉树进行深度遍历,确定任务T(节点T)所在的子路径为:O→T→W。
步骤206,将子路径中的所有任务放入同一个线程中,并将所有线程压入线程池。
具体而言,服务器包含需要进行修复的任务的子路径后,可以将该子路径中的所有任务放入同一个线程中,并将所有线程压入线程池,从而最大限度地保证所有任务都能够正常运行。
在一个例子中,各待调度任务的多叉树如图6所示,在修复之前线程池中有任务M、任务P、任务Q、任务U和任务V线程,任务N和任务R线程,任务O、任务S、任务T和任务W线程,共三个线程,服务器确认任务U和任务T为需要进行修复的任务,服务器将任务M、任务Q和任务U单独放入第四个线程中,将任务O、任务T和任务W放入第五个线程中,并将这五个线程压入线程池中。
步骤207,运行线程池中的线程。
具体而言,服务器将子路径中的所有任务放入同一个线程中,并将所有线程压入线程池后,可以运行线程池中的线程,从而实现数据修复,实现新的调度。
本实施例,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:确定需要进行修复的任务;其中,所述需要进行修复的任务包括运行失败的任务,和/或,运行结果不符合预设标准的任务;根据所述多叉树,确定包含所述需要进行修复的任务的子路径;将所述子路径中的所有任务放入同一个线程中,并将所有线程压入线程池;运行所述线程池中的线程。将子路径中的任务放入一个线程中,可以最大限度地保证所有任务都能够正常运行。
本发明的另一个实施例涉及一种调度方法,下面对本实施例的调度方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,在服务器对各待调度任务进行调度,并完成调度后,服务器获取到新增的待调度任务,服务器可以更新多叉树,进行新一轮的调度,图7是本实施例根据新增的待调度任务,更新多叉树的流程图,包括:
步骤301,获取新增的待调度任务,并获取新增的待调度任务的信息。
具体而言,服务器在对待调度任务完成本轮调度后,可以获取新增的待调度任务,并获取新增的待调度任务的信息,其中,新增的待调度任务的信息包括新增的待调度任务的父子关系。
在具体实现中,新增的待调度任务的信息还可以包括但不限于:任务的身份标识号,任务的父任务ID,任务的有效期,任务执行状态,任务开始时间和任务结束时间等。
步骤302,根据新增的待调度任务的父子关系,判断新增的待调度任务是否有父任务,如果是,执行步骤304,否则,执行步骤303。
步骤303,将新增的待调度任务添加为一级子节点。
具体而言,若服务器判断新增的待调度任务没有父任务,服务器可以将新增的待调度任务添加为多叉树的一级子节点。
在一个例子中,原多叉树可以如图3所示,新增的待调度任务为任务X,服务器根据任务X的信息确定任务X没有父任务,则如图8所示,服务器将任务X添加为根节点Tree的子节点。
步骤304,判断新增的待调度任务的父任务是否在多叉树中,如果是,执行步骤305,否则,直接结束流程。
在一个例子中,若新增的待调度任务的父任务不在多叉树中,服务器可以判定该新增的待调度任务为非法任务,丢弃该任务,拒绝对该任务进行调度。
步骤305,将新增的待调度任务添加为新增的待调度任务的父任务所在节点的子节点。
具体而言,若服务器判断新增的待调度任务有父任务,且新增的待调度任务的父任务在多叉树中,服务器可以将新增的待调度任务添加为新增的待调度任务的父任务所在节点的子节点。当有新增的调度任务时,无需重新扫描所有任务,只需根据新任务的父子关系将其添加到多叉树中,可以有效节约调度资源和计算资源。
在一个例子中,原多叉树可以如图3所示,新增的待调度任务为任务Y,服务器确定任务Y的父任务为任务D,则如图8所示,服务器将任务Y添加为任务D的子节点。
步骤306,判断新增的待调度任务是否有子任务,如果是,执行步骤307,否则,直接结束流程。
步骤307,判断新增的待调度任务的子任务是否在多叉树中,如果是,执行步骤308,否则,执行步骤309.
具体而言,考虑到新增的待调度任务可能是原待调度任务的父任务,服务器在多叉树中添加新增的待调度任务后,可以判断新增的待调度任务的子任务是否在多叉树中,以防多叉树混乱出错。
步骤308,删除新增的待调度任务的子任务所在节点,并将新增的待调度任务的子任务添加为新增的待调度任务所在节点的子节点。
具体而言,若新增的待调度任务的子任务在多叉树中,服务器可以先将该子任务原来的所在的节点从多叉树中删去,并将新增的待调度任务的子任务添加为新增的待调度任务所在节点的子节点。
步骤309,将新增的待调度任务的子任务添加为新增的待调度任务所在节点的子节点。
具体而言,若新增的待调度任务的子任务不在多叉树中,则服务器判定该子任务也是新增的待调度任务,服务器可以将新增的待调度任务的子任务添加为新增的待调度任务所在节点的子节点。
本实施例,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:获取新增的待调度任务,并获取所述新增的待调度任务的信息;其中,所述新增的待调度任务的信息包括新增的待调度任务的父子关系;根据所述新增的待调度任务的父子关系,判断所述新增的待调度任务是否有父任务;若所述新增的待调度任务没有父任务,将所述新增的待调度任务添加为一级子节点;若所述新增的待调度任务有父任务,且所述新增的待调度任务的父任务在所述多叉树中,将所述新增的待调度任务添加为所述新增的待调度任务的父任务所在节点的子节点;判断所述新增的待调度任务是否有子任务;若所述新增的待调度任务有子任务,且所述新增的待调度任务的子任务在所述多叉树中,则删除所述新增的待调度任务的子任务所在节点,并将所述新增的待调度任务的子任务添加为所述新增的待调度任务所在节点的子节点。当有新增的调度任务时,无需重新扫描所有任务,只需根据新任务的父子关系将其添加到多叉树中,可以有效节约调度资源和计算资源。
本发明的另一个实施例涉及一种调度方法,下面对本实施例的调度方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,在服务器对各待调度任务进行调度,并完成调度后,服务器可以确定需要修改父任务的任务,并更新多叉树,进行新一轮的调度,图9是本实施例根据需要修改父任务的任务,更新多叉树的流程图,包括:
步骤401,确定需要修改父任务的任务,并获取需要修改父任务的任务的信息。
具体而言,服务器在对待调度任务完成本轮调度后,可以确定需要修改父任务的任务,并获取需要修改父任务的任务的信息,其中,需要修改父任务的任务的信息包括需要修改父任务的任务的新父任务。
在一个例子中,服务器确定任务I为需要修改父任务的任务,服务器可以获取任务I的信息,根据任务I的信息确定任务I的新父任务为任务D。
步骤402,若新父任务在多叉树中,删除需要修改父任务的任务所在节点,并将需要修改父任务的任务作为新父任务所在节点的子节点。
具体而言,服务器在确定需要修改父任务的任务,并获取需要修改父任务的任务的信息后,可以判断新父任务是否在各待调度任务的多叉树中,若新父任务在各待调度任务的多叉树中,服务器可以在多叉树中,删除需要修改父任务的任务所在节点,并将需要修改父任务的任务作为新父任务所在节点的子节点。对于需要修改父任务的任务,删除原节点,并添加新节点,可以保证修改父任务后的任务能够正常调度、正常运行。
在一个例子中,服务器确定任务I为需要修改父任务的任务,任务I的原父任务为任务C,任务I的新父任务为任务D,服务器可以在多叉树中,删除任务I所在节点,即删除节点C下的节点I,并在节点D下重新添加节点I。
在另一个例子中,若服务器确定需要修改父任务的任务的新父任务不在各待调度任务的多叉树中,服务器可以判定该任务为非法任务,丢弃该任务。
比如:各待调度任务的多叉树可以如图3所示,服务器确定任务J为需要修改父任务的任务,任务J的原父任务为任务E,任务J的新父任务为任务M,服务器确定任务M不在原多叉树中,服务器可以如图10所示,删除节点E下的节点J,并判定任务J为非法任务,丢弃任务J。
在另一个例子中,若服务器确定需要修改父任务的任务的新父任务为空,即该任务不再依赖其他任务的运行结果而运行,服务器可以将该任务添加为多叉树的一级子节点。
比如:各待调度任务的多叉树可以如图3所示,服务器确定任务L为需要修改父任务的任务,任务L的原父任务为任务E,任务L的新父任务为空,服务器可以如图10所示,删除节点E下的节点L,并将节点L添加为根节点Tree的一级子节点。
本实施例,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:确定需要修改父任务的任务,并获取所述需要修改父任务的任务的信息;其中,所述需要修改父任务的任务的信息包括所述需要修改父任务的任务的新父任务;若所述新父任务在所述多叉树中,删除所述需要修改父任务的任务所在节点,并将所述需要修改父任务的任务作为所述新父任务所在节点的子节点。对于需要修改父任务的任务,删除原节点,并添加新节点,可以保证修改父任务后的任务能够正常调度、正常运行。
本发明的另一个实施例涉及一种调度系统,下面对本实施例的调度系统的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图11是本实施例所述的调度系统的示意图,包括:数据库501、调度器502和计算器503。
数据库501分别与调度器502和计算器503连接,调度器502还与计算器503连接。
数据库501用于存储各待调度任务和各待调度任务的信息。
调度器502用于从数据库501中获取各待调度任务的信息,其中,信息包括各待调度任务的父子关系,根据各待调度任务和父子关系,获取各待调度任务的多叉树。
计算器503用于从数据库501获取各待调度任务,根据多叉树,对各待调度任务进行调度。
在一个例子中,如图12所示,计算器503包括存储模块5031,协调模块5032,控制模块5033和执行模块5034,存储模块5031分别于与数据库501、调度器502、协调模块5032和执行模块5034连接,协调模块5032还与控制模块5033连接,控制模块5033还与执行模块5034和数据库501连接。存储模块5031可以从数据库501中获取待调度任务,这些待调度任务进入存储模块5031即计算器503后,自动转变为待执行任务,当待执行任务被要求执行时,存储模块5031将待执行任务发送给协调模块5032,同时,存储模块5031还可以扫描调度器502已构建好的多叉树调度策略,确定待执行任务的状态和其他已完成执行的任务的状态,并告知协调模块5032。协调模块5032在当连接数和任务请求数低于预设阈值时,将空闲的待执行任务提交给控制模块5033。控制模块5033收到空闲的待执行任务后,可以将空闲的待执行任务发送给执行模块5034,并控制执行模块5034执行空闲的待执行任务。控制模块5033还可以在空闲的待执行任务执行完成后,调用预设的反馈算法,将任务结果和任务完成状态返回给数据库501记录保存。
不难发现,本实施例为与上述方法实施例对应的系统实施例,本实施例可以与上述方法实施例互相配合实施。上述实施例中提到的相关技术细节和技术效果在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本发明另一个实施例涉及一种服务器,如图13所示,包括:至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够执行上述各实施例中的调度方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明另一个实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (12)

1.一种调度方法,应用于服务器,其特征在于,包括:
获取各待调度任务的信息;其中,所述各待调度任务的信息包括各待调度任务的父子关系;
根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树;
根据所述多叉树,对所述各待调度任务进行调度。
2.根据权利要求1所述的调度方法,其特征在于,所述根据所述多叉树,对所述各待调度任务进行调度,包括:
根据所述多叉树,确定所述各待调度任务中需要进行同一串行运行的任务;
将所述需要进行同一串行运行的任务放入同一个线程中,并将所有线程压入线程池;
运行所述线程池中的线程。
3.根据权利要求2所述的调度方法,其特征在于,所述根据所述多叉树,确定所述各待调度任务中需要进行同一串行运行的任务,包括:
对所述多叉树进行广度遍历,确定所述各待调度任务中需要进行同一串行运行的任务。
4.根据权利要求1所述的调度方法,其特征在于,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:
确定需要进行修复的任务;其中,所述需要进行修复的任务包括运行失败的任务,和/或,运行结果不符合预设标准的任务;
根据所述多叉树,确定包含所述需要进行修复的任务的子路径;
将所述子路径中的所有任务放入同一个线程中,并将所有线程压入线程池;
运行所述线程池中的线程。
5.根据权利要求4所述的调度方法,其特征在于,所述根据所述多叉树,确定包含所述需要进行修复的任务的子路径,包括:
对所述多叉树进行深度遍历,确定包含所述需要进行修复的任务的子路径。
6.根据权利要求1所述的调度方法,其特征在于,根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树,包括:
将各待调度任务中没有父任务的待调度任务,作为各待调度任务的多叉树的一级子节点;
将各待调度任务中有父任务的待调度任务,作为所述父任务所在节点的子节点,得到所述各待调度任务的多叉树。
7.根据权利要求6所述的调度方法,其特征在于,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:
获取新增的待调度任务,并获取所述新增的待调度任务的信息;其中,所述新增的待调度任务的信息包括新增的待调度任务的父子关系;
根据所述新增的待调度任务的父子关系,判断所述新增的待调度任务是否有父任务;
若所述新增的待调度任务没有父任务,将所述新增的待调度任务添加为一级子节点;
若所述新增的待调度任务有父任务,且所述新增的待调度任务的父任务在所述多叉树中,将所述新增的待调度任务添加为所述新增的待调度任务的父任务所在节点的子节点;
判断所述新增的待调度任务是否有子任务;
若所述新增的待调度任务有子任务,且所述新增的待调度任务的子任务在所述多叉树中,则删除所述新增的待调度任务的子任务所在节点,并将所述新增的待调度任务的子任务添加为所述新增的待调度任务所在节点的子节点。
8.根据权利要求6所述的调度方法,其特征在于,在所述根据所述多叉树,对所述各待调度任务进行调度之后,还包括:
确定需要修改父任务的任务,并获取所述需要修改父任务的任务的信息;其中,所述需要修改父任务的任务的信息包括所述需要修改父任务的任务的新父任务;
若所述新父任务在所述多叉树中,删除所述需要修改父任务的任务所在节点,并将所述需要修改父任务的任务作为所述新父任务所在节点的子节点。
9.根据权利要求1所述的调度方法,其特征在于,所述信息还包括各待调度任务的有效期;
在所述获取各待调度任务的信息之后,且在所述根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树之前,所述方法还包括:
根据所述各待调度任务的有效期,判断所述各待调度任务中是否有超期的待调度任务;
若所述各待调度任务中有超期的待调度任务,丢弃所述超期的待调度任务。
10.一种调度系统,其特征在于,包括:数据库、调度器和计算器;
所述数据库分别与所述调度器和所述计算器连接,所述调度器还与所述计算器连接;
所述数据库用于存储各待调度任务和所述各待调度任务的信息,其中,所述各待调度任务的信息包括各待调度任务的父子关系;
所述调度器用于从所述数据库中获取所述各待调度任务的信息,根据所述各待调度任务和所述父子关系,获取所述各待调度任务的多叉树;
所述计算器用于从所述数据库获取所述各待调度任务,根据所述多叉树,对所述各待调度任务进行调度。
11.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至9中任一项所述的调度方法。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的调度方法。
CN202110624609.6A 2021-06-04 2021-06-04 调度方法、系统、服务器和计算机可读存储介质 Pending CN115437757A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110624609.6A CN115437757A (zh) 2021-06-04 2021-06-04 调度方法、系统、服务器和计算机可读存储介质
PCT/CN2022/095893 WO2022253165A1 (zh) 2021-06-04 2022-05-30 调度方法、系统、服务器和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110624609.6A CN115437757A (zh) 2021-06-04 2021-06-04 调度方法、系统、服务器和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115437757A true CN115437757A (zh) 2022-12-06

Family

ID=84240532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110624609.6A Pending CN115437757A (zh) 2021-06-04 2021-06-04 调度方法、系统、服务器和计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN115437757A (zh)
WO (1) WO2022253165A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116149829A (zh) * 2023-04-20 2023-05-23 中邮消费金融有限公司 任务管理方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209701B1 (en) * 2007-09-27 2012-06-26 Emc Corporation Task management using multiple processing threads
KR102182295B1 (ko) * 2014-04-21 2020-11-24 삼성전자 주식회사 하드웨어 기반 태스크 스케쥴링 장치 및 방법
CN112749034B (zh) * 2019-10-31 2024-05-17 北京沃东天骏信息技术有限公司 一种数据异常处理方法、装置、存储介质及电子设备
CN112748993A (zh) * 2019-10-31 2021-05-04 北京国双科技有限公司 任务执行方法、装置、存储介质及电子设备
CN112579273B (zh) * 2020-12-15 2023-05-30 京东科技控股股份有限公司 任务调度方法及装置、计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116149829A (zh) * 2023-04-20 2023-05-23 中邮消费金融有限公司 任务管理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2022253165A1 (zh) 2022-12-08

Similar Documents

Publication Publication Date Title
CN111427681B (zh) 边缘计算中基于资源监控的实时任务匹配调度系统和方法
US8595735B2 (en) Holistic task scheduling for distributed computing
CN113536081B (zh) 基于人工智能的数据中心数据管理方法及系统
CN107704597A (zh) 关系型数据库至Hive的ETL脚本创建方法
CN110019298A (zh) 数据处理方法和装置
CN115437757A (zh) 调度方法、系统、服务器和计算机可读存储介质
CN112463334B (zh) 一种训练任务排队原因分析方法、系统、设备以及介质
US8296449B2 (en) Systems and methods for calculating a distribution
CN115511292B (zh) 一种生产排程方法、系统、智能终端和存储介质
CN110930056A (zh) 一种基于思维导图的任务管理方法、终端设备及存储介质
CN112988576B (zh) 一种软件项目研发进程确定方法及装置
CN109558222A (zh) 批量业务进程监控方法、装置、计算机及可读存储介质
CN112131257B (zh) 数据查询方法和装置
CN113986495A (zh) 一种任务执行方法、装置、设备及存储介质
CN114625512A (zh) 任务调度方法、装置、电子设备及存储介质
CN112766719A (zh) 任务分配方法及装置
EP1697834B1 (en) Data processing system and method
CN117873691B (zh) 数据处理方法、装置、设备及可读存储介质
CN116090705B (zh) 基于智慧工地的数据处理方法、系统及云平台
US7464038B2 (en) Method and system for changing an order in a flexible order transaction system
CN116974526A (zh) 数据开发方法、装置、终端设备以及存储介质
CN109344166B (zh) 数据库的监控方法、计算机可读存储介质和终端设备
CN114240383A (zh) 一种业务需求管理方法及装置
CN115222269A (zh) 规则判定方法及相关设备
CN112532750A (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