CN111008071A - 任务调度系统、方法和服务器 - Google Patents

任务调度系统、方法和服务器 Download PDF

Info

Publication number
CN111008071A
CN111008071A CN201911333205.0A CN201911333205A CN111008071A CN 111008071 A CN111008071 A CN 111008071A CN 201911333205 A CN201911333205 A CN 201911333205A CN 111008071 A CN111008071 A CN 111008071A
Authority
CN
China
Prior art keywords
task
executed
module
task execution
dispatching module
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
CN201911333205.0A
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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
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 Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201911333205.0A priority Critical patent/CN111008071A/zh
Publication of CN111008071A publication Critical patent/CN111008071A/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种任务调度系统、方法和服务器,其中,该系统包括第一任务派发模块和多个任务执行模块;第一任务派发模块与多个任务执行模块通信连接;第一任务派发模块用于存储待执行任务;多个任务执行模块用于从第一任务派发模块中获取待执行任务,通过获取到待执行任务的任务执行模块,执行待执行任务。本发明通过多个任务执行模块从第一任务派发模块中获取待执行任务,相较于任务队列按照工作节点的排列顺序将各个任务分配给各个工作节点的方式,该方式中的任务执行模块主动获取任务,从而提高了任务分配的灵活性,且任务执行模块可根据自身的工作状态获取任务,有利于提高任务分配的合理性。

Description

任务调度系统、方法和服务器
技术领域
本发明涉及大数据处理技术领域,尤其是涉及一种任务调度系统、方法和服务器。
背景技术
相关技术中的任务调度系统,通常将任务存储于数据库中,由调度节点从数据库中获取任务,然后将获取到的任务发送至任务队列,该任务队列将各个任务分配给各个工作节点,在分配任务的过程中,通常是按照工作节点的排列顺序进行分配的,导致任务分配的灵活性较差,且难以合理分配任务。
发明内容
本发明的目的在于提供一种任务调度系统、方法和服务器,以提高任务分配的灵活性和合理性。
第一方面,本发明实施例提供一种任务调度系统,该系统包括第一任务派发模块和多个任务执行模块;该第一任务派发模块与多个任务执行模块通信连接;第一任务派发模块用于存储待执行任务;多个任务执行模块用于:从第一任务派发模块中获取待执行任务,通过获取到待执行任务的任务执行模块,执行待执行任务。
在可选的实施方式中,上述第一任务派发模块中预设有多级任务存储目录,用于存储待执行任务;该第一任务派发模块还用于:从预设的数据库获取待执行任务;根据待执行任务的任务属性,从任务存储目录中确定目标路径,将待执行任务添加至任务存储目录中的目标路径。
在可选的实施方式中,上述多个任务执行模块还用于:每个任务执行模块均监听第一任务派发模块中是否添加新的待执行任务,如果监听到添加新的待执行任务,获取新的待执行任务;其中,多个任务执行模块中最多一个任务执行模块获取到新的待执行任务;通过获取到新的待执行任务的任务执行模块,执行新的待执行任务。
在可选的实施方式中,上述第一任务派发模块还用于:将执行待执行任务的任务执行模块的模块标识,与待执行任务关联保存。
在可选的实施方式中,上述多个任务执行模块中,任意两个任务执行模块通信连接;多个任务执行模块中的每个任务执行模块,用于:监听除当前任务执行模块以外的目标任务执行模块的任务执行状态;如果目标任务执行模块的任务执行状态满足第一预设条件,并且当前任务执行模块的任务执行状态满足第二预设条件,执行目标任务执行模块中的指定任务。
在可选的实施方式中,上述第一任务派发模块中的任务存储目录,包括Zookeeper模式的任务存储目录和/或ETCD模式的任务存储目录。
在可选的实施方式中,上述系统还包括第二任务派发模块;该第二任务派发模块用于:从预设的数据库获取待执行任务;通过预设的派发器,将待执行任务分配至多个任务执行模块中的一个任务执行模块,以通过分配到待执行任务的任务执行模块,执行待执行任务。
在可选的实施方式中,上述系统还包括任务管理器;该任务管理器分别与数据库、第一任务派发模块和第二任务派发模块通信连接;该任务管理器用于从数据库获取待执行任务,向第一任务派发模块和/或第二任务派发模块分别发布待执行任务。
第二方面,本发明实施例提供一种任务调度方法,该方法应用于前述实施方式任一项所述的任务调度系统;该方法包括:获取待执行任务,并将该待执行任务存储至第一任务派发模块;通过多个任务执行模块从第一任务派发模块中获取待执行任务,以执行待执行任务。
在可选的实施方式中,上述通过多个任务执行模块从第一任务派发模块中获取待执行任务,以执行待执行任务的步骤,包括:通过多个任务执行模块监听第一任务派发模块是否新增待执行任务;如果是,通过多个任务执行模块向第一任务派发模块发送争抢任务操作;通过获得新增的待执行任务的任务执行模块执行该待执行任务。
在可选的实施方式中,上述方法还包括:在通过获得新增的待执行任务的任务执行模块执行所述待执行任务之前,基于多个任务执行模块的负载状态和争抢任务操作,通过第一任务派发模块确定以执行待执行任务的任务执行模块。
在可选的实施方式中,上述通过多个任务执行模块监听第一任务派发模块是否新增待执行任务的步骤,包括:基于每个任务执行模块,对第一任务派发模块中的元数据的描述信息进行监听;当监听到第一任务派发模块中新增有元数据的描述信息时,确定该第一任务派发模块有新增待执行任务。
第三方面,本发明实施例提供一种服务器,该服务器包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以运行前述实施方式任一项所述的任务调度系统。
第四方面,本发明实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器运行前述实施方式任一项所述的任务调度系统。
本发明实施例带来了以下有益效果:
本发明提供了一种任务调度系统、方法和服务器,该任务调度系统包括第一任务派发模块和多个任务执行模块;第一任务派发模块存储待执行任务;多个任务执行模块从该第一任务派发模块中获取待执行任务,通过获取到待执行任务的任务执行模块,执行待执行任务。本发明通过多个任务执行模块从第一任务派发模块中获取待执行任务,相较于任务队列按照工作节点的排列顺序将各个任务分配给各个工作节点的方式,该方式中的任务执行模块主动获取任务,从而提高了任务分配的灵活性,且任务执行模块可根据自身的工作状态获取任务,有利于提高任务分配的合理性。
发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种Apache AirFlow调度系统的结构示意图;
图2为本发明实施例提供的一种Apache Oozie调度系统的结构示意图;
图3为本发明实施例提供的一种任务调度系统的结构示意图;
图4为本发明实施例提供的另一种任务调度系统的结构示意图;
图5为本发明实施例提供的另一种任务调度系统的结构示意图;
图6为本发明实施例提供的一种任务调度方法的流程图;
图7为本发明实施例提供的另一种任务调度方法的流程图;
图8为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中的调度系统,通常采用Apache AirFlow和Apache Oozie调度和工作流系统,该Apache AirFlow和Apache Oozie调度系统是Apache软件基金会中的调度系统,同时上述两种调度系统的架构也代表了企业级调度系统的主流设计思路。如图1所示给出了一种Apache AirFlow调度系统的结构示意图,图1中的任务数据存储在数据库中,该数据库可以是关系型数据库,然后以调度节点为任务委派中心将数据库中的任务数据发送至任务队列中,该任务队列将各个任务分配给各个工作节点,以使工作节点执行分配的任务。图1中的调度系统也说明了相关技术中大多数调度任务流程派发的过程和组成,但是图1中的方式在分配任务的过程中,通常是按照工作节点的排列顺序进行分配的,导致任务分配的灵活性较差,且难以合理分配任务。
如图2所示给出了一种Apache Oozie调度系统的结构示意图,图2中的任务数据存储在数据库中,该数据库可以用Oozie object database表示,该Apache Oozie调度系统中没有工作节点,调度节点将从数据库中获取的任务数据发送至Hadoop大数据集群中的YARN队列中,以使该Hadoop大数据集群中的MapReduce执行任务,该Hadoop大数据集群通常是一个分布式系统基础架构,该Hadoop大数据集群可以对数据进行高速运算和存储。但是该方式中也只是将YARN队列中任务进行分配,没有节点之间的协同,导致任务分配的灵活性较差。
基于上述描述,本发明实施例提供了一种任务调度系统、方法和服务器,该技术可以应用于调度系统的任务分配和任务执行的场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种任务调度系统,如图3所述,该任务调度系统包括第一任务派发模块30和多个任务执行模块31;该第一任务派发模块与多个任务执行模块通信连接。
上述第一任务派发模块30用于存储待执行任务。该待执行任务可以是从预设数据库中获取的,该预设数据库中保存有各种任务,以及任务的相应描述,例如执行任务所需的时间、所需内存、任务内容、任务编号等;该待执行任务也可以是外部设备根据工作需求发送的,该外部设备可以是服务器或者客户端等。
该第一任务派发模块30接收到待执行任务时,可以将该待执行任务按照一定规则进行保存,例如,可以按照任务送达的时间顺序进行保存,可以按照任务类型进行保存,也可以按照任务编号进行保存等。
多个任务执行模块31用于:从第一任务派发模块30中获取待执行任务,通过获取到待执行任务的任务执行模块31,执行待执行任务。
上述任务执行模块31可以是服务器,也可以是客户端的计算机。每个任务执行模块31通常都具有判断和逻辑能力,可以根据第一任务派发模块30中待执行任务的派发状态,判定该待执行任务是否需要执行。如果该待执行任务需要执行时,多个任务执行模块31可以从第一任务派发模块30中主动获取该待执行任务,在获取任务的过程中,一个待执行任务可以由一个任务执行模块31获取到。通常由获取到待执行任务的任务执行模块31执行该待执行任务。
在具体实现时,多个任务执行模块31可以向第一任务派发模块30发送任务获取请求,以获取待执行任务,当多个任务执行模块31竞争一个待执行任务时,多个任务执行模块31中发送任务获取请求最快的任务执行模块可以获取到该待执行任务。
本发明提供了一种任务调度系统,该任务调度系统包括第一任务派发模块和多个任务执行模块;第一任务派发模块存储待执行任务;多个任务执行模块从该第一任务派发模块中获取待执行任务,通过获取到待执行任务的任务执行模块,执行待执行任务。本发明通过多个任务执行模块从第一任务派发模块中获取待执行任务,相较于任务队列按照工作节点的排列顺序将各个任务分配给各个工作节点的方式,该方式中的任务执行模块主动获取任务,从而提高了任务分配的灵活性,且任务执行模块可根据自身的工作状态获取任务,有利于提高任务分配的合理性。
本发明实施例还提供了另一种任务调度系统,该系统在图3所示任务调度系统的基础上实现;如图4所述,该系统包括第一任务派发模块30和多个任务执行模块31。
具体地,上述第一任务派发模块30中预设有多级任务存储目录40,用于存储待执行任务;上述第一任务派发模块30还用于:从预设的数据库获取待执行任务;根据待执行任务的任务属性,从任务存储目录40中确定目标路径,将该待执行任务添加至任务存储目录40中的目标路径。
上述预设的数据库中通常保存有各种任务,以及任务的任务属性,该任务属性可以包括任务类型、任务对应的客户、任务执行所需内存、任务内容、任务编号等;该数据库通常采用关系型数据库,例如,MySQL数据库,该MySQL通常是一种关系数据库管理系统,可以将数据保存在不同的表中。每个待执行任务通常都对应有相应的任务属性,每个待执行任务对应的任务属性可能相同也可能不同。
上述多级任务存储目录40通常可以以目录形式存储待执行任务,该多级任务存储目录40可以根据任务属性将目录划分为多个级别,例如,任务存储目录40的第一级目录可以是任务对应的客户,第二级目录可以是任务类型,第三级目录可以是任务执行所需的内存。通常根据待执行任务的任务属性和任务存储目录40的目录级别,可以确定待执行任务存储的目标路径,也可以理解为首先根据待执行任务的任务属性,确定其在任务存储目录40的第一级目录,再在第一级目录下根据任务属性确定第二级目录,进而在第三级目录下根据任务属性确定第三级目录,以此类推,直到所有任务属性确定完毕或者不存在下一级目录为止,得到待执行任务对应的目标路径,该目标路径可以表示为第一级目录\第二级目录\第三级目录…。
上述目标路径可以表征待执行任务在任务存储目录40中的存储位置,可以按照确定的目标路径将待执行任务添加至任务存储目录40的对应位置。通常上述任务存储目录可以保存待执行任务的状态、工作内容以及该待执行任务与其他任务之间的关系。在具体实现时,任务执行模块可以从第一任务派发模块30的任务存储目录40中获取待执行任务。
上述第一任务派发模块30中的任务存储目录40,包括Zookeeper模式的任务存储目录和/或ETCD模式的任务存储目录。在具体实现时,该任务存储目录40可以采用Zookeeper模式的任务存储目录,可以采用ETCD模式的任务存储目录,也可以是既采用Zookeeper模式的任务存储目录又采用ETCD模式的任务存储目录。
上述Zookeeper通常是一个分布式应用程序协调服务,它可以为分布式应用提供一致性服务,提供的功能服务包括分布式锁、统一命名服务、配置管理等。上述Zookeeper模式的任务存储目录包括中多个Znode,该Znode通常是Zookeeper存储数据的最小单元,Znode通常具有目录和文件两重属性,即Znode既可以当作文件往里面写东西,又可以当作目录在下面挂载其他Znode,例如,该Znode被以层次化的结构进行组织,形容一棵树,该树的根Znode节点相当于根路径,根Znode节点下可以挂载多个子节点,相当于子目录。
上述Znode可以按其生命周期的长短可以分为持久结点和临时结点(;在创建时还可选择是否由Zookeeper服务端在其路径后添加一串序号用来区分同一个父结点下多个结点创建的先后顺序。
上述ETCD(consistent key-value store for shared configuration andservice discovery,用于共享配置和服务发现的键值对存储系统)可以是一个高可用的一致性键值存储系统,该ETCD中包含有一个强一致性、高可用的服务存储目录,该ETCD的服务存储目录ETCD可以通过定制的PREFI-KEY来实现;该服务存储目录分为内存存储和持久化(硬盘)存储两部分,内存中的存储除了顺序化的记录下所有用户对节点数据变更的记录外,还会对用户数据(相当于上述待执行任务)进行索引、建堆等方便查询的操作,该持久化的服务存储目录中,通常有两个子目录,一个用于存储所有事务的变化记录,另一个用于存储某一个时刻ETCD所有目录的用户数据。
进一步地,上述多个任务执行模块31还用于:每个任务执行模块均监听第一任务派发模块30中是否添加新的待执行任务,如果监听到添加新的待执行任务,获取新的待执行任务;其中,多个任务执行模块31中最多一个任务执行模块获取到新的待执行任务;通过获取到新的待执行任务的任务执行模块31,执行新的待执行任务。
上述任务执行模块31还用于:基于每个任务执行模块,对第一任务派发模块中的元数据的描述信息进行监听;当监听到第一任务派发模块中新增有元数据的描述信息时,确定该第一任务派发模块有新增待执行任务。
上述元数据的描述信息可以是针对第一任务派发模块中存储数据(相当于存储的任务)的组织、数据域及其关系的描述信息。通过监听该元数据的描述信息的变化,可以判定第一任务派发模块是否新增有待执行任务。
当第一任务派发模块30中添加了新的待执行任务时,多个任务执行模块均可以获取新的待执行任务,也即是可以争抢获取新的待执行任务,通常获取速度最快的任务执行模块31可以获取到新的待执行任务,获取速度通常由任务执行模块31的资源空闲量决定,例如,当任务执行模块31的可用内存较多时,获取速度较快;当任务执行模块31的可用内存较少时,获取速度较慢。
在具体实现时,上述第一任务派发模块30还用于:将执行待执行任务的任务执行模块31的模块标识,与待执行任务关联保存。每一个任务执行模块都对应有唯一的模块标识,该模块标识可以是数字、字母或者字符串等,当任务执行模块31获取到待执行任务时,第一任务派发模块30可将该任务执行模块的模块标识与待执行任务进行关联保存,以记录待执行任务与执行该任务的任务执行模块的对应关系,方便监控该待执行任务的执行情况。
进一步地,上述多个任务执行模块31中,任意两个任务执行模块31通信连接;多个任务执行模块31中的每个任务执行模块31,用于:监听除当前任务执行模块以外的目标任务执行模块的任务执行状态;如果目标任务执行模块的任务执行状态满足第一预设条件,并且当前任务执行模块的任务执行状态满足第二预设条件,执行目标任务执行模块中的指定任务。
上述任务执行状态可以包括目标任务执行模块执行任务的工作内容、目标任务执行模块的资源空闲量和任务执行速度等。上述第一预设条件可以是资源空闲量不足以支撑目标任务执行模块执行完成正在执行的任务,或者目标任务执行模块的任务执行速度小于预设速度阈值,或者目标任务执行模块故障等。上述第二预设条件可以是当前任务执行模块的资源空闲量足以完成目标任务执行模块正在执行的任务中未完成的内容,或者当前目标任务执行模块的任务执行速度大于或者等于预设速度阈值。
在具体实现时,每个任务执行模块都具有判断和逻辑能力,也具有对其他任务执行模块正在执行的任务的工作内容的状态监控和后续状态的继续跟进能力。也即是,当目标任务执行模块正在执行的任务的执行速度过慢,或者目标任务执行模块的资源空闲量不足或者出现故障时,它的工作列表和任务执行状态可以被当前目标任务执行模块监听到,当前任务执行模块可以根据自身任务执行状态判定是否执行目标任务执行模块正在执行的任务,当多个当前任务执行模块的自身任务执行状态都符合要求,将会争抢执行该目标任务执行模块正在执行的任务,从而可以减少目标任务执行模块的执行压力,也可以提高任务执行的效率。
上述任务调度系统,首先从预设的数据库获取待执行任务,进而根据待执行任务的任务属性,从任务存储目录中确定目标路径,将该待执行任务添加至任务存储目录中的目标路径,通过多个任务执行模块从第一任务派发模块中任务存储目录中获取待执行任务,获取到待执行任务的任务五执行模块执行待执行任务,该方式中的任务执行模块主动获取任务,且可以与第一任务派发模块进行协同,从而提高了任务分配的灵活性,同时也提高了任务执行的效率。
本发明实施例还提供了另一种任务调度系统,该系统在图3所示任务调度系统的基础上实现;如图5所述,该系统包括第一任务派发模块30和多个任务执行模块31。
具体地,该系统还包括第二任务派发模块50;该第二任务派发模块50用于:从预设的数据库获取待执行任务;通过预设的派发器,将待执行任务分配至多个任务执行模块中的一个任务执行模块,以通过分配到待执行任务的任务执行模块,执行待执行任务。
上述第二任务派发模块50可以将待执行任务分配给任务执行模块,以使任务执行模块执行分配的待执行任务。上述预设的派发器可以为Airflow派发器、Oozie派发器、系统内置的标准派发器或者其他派发器,也即是该第二任务派发模块可以采用Apache AirFlow和Apache Oozie调度系统的任务派发形式将待处理任务分配给任务执行模块。
进一步地,上述系统还包括任务管理器51;该任务管理器51分别与数据库、第一任务派发模块30和第二任务派发模块50通信连接;该任务管理器51用于从数据库获取待执行任务,向第一任务派发模块和/或第二任务派发模块分别发布待执行任务。
上述任务管理器51通常类似于windows的任务计划管理器,该任务管理器51可以采用配置文件来记录从数据可中获取的要调度的任务,可以在管理界面中设置任务属性,如程序命令行、执行的时间点等,也可以直接修改配置文件。
上述任务管理器51可向第一任务派发模块发布待执行任务,可以向第二任务派发模块发布待执行任务,也可以既向第一任务派发模块发布任务又向第二任务派发模块发布待执行任务。当任务管理器51既向第一任务派发模块发布任务又向第二任务派发模块发布待执行任务时,一个待执行任务可以仅发送给一个任务派发模块,也可以发送给两个任务派发模块;由于第一任务派发模块第二任务派发模块中的数据可以相互同步,也即是第一任务派发模块记录的待执行任务与任务执行模块的模块标识会同步至第二任务派发模块中,因此不会出现一个待执行任务分配两次的现象,从而也可以快速且合理的分配待执行任务。
上述任务调度系统,包括第一任务派发模块、多个任务执行模块、第二任务派发模块和任务管理器,该任务管理器可以向第一任务派发模块和第二任务派发模块发布待执行任务,任务执行模块可以从第一任务派发模块中获取待执行任务,也可以接收第二任务执行模块分配的任务,从而提高了任务分配的效率。
对应于上述任务调度系统的实施例,本发明实施例还提供了一种任务调度方法,该方法应用于上述任务调度系统;如图6所述,该方法包括具体包括如下步骤:
步骤S602,获取待执行任务,并将该待执行任务存储至第一任务派发模块。
步骤S604,通过多个任务执行模块从第一任务派发模块中获取待执行任务,以执行待执行任务。
上述任务调度方法,首先获取待执行任务,并将该待执行任务存储至第一任务派发模块;然后通过多个任务执行模块从该第一任务派发模块中获取待执行任务,以执行待执行任务。本发明通过多个任务执行模块从第一任务派发模块中获取待执行任务,相较于任务队列按照工作节点的排列顺序将各个任务分配给各个工作节点的方式,该方式中的任务执行模块主动获取任务,从而提高了任务分配的灵活性,且任务执行模块可根据自身的工作状态获取任务,有利于提高任务分配的合理性。
本发明实施例还提供了另一种任务调度方法,该方法在上述实施例方法的基础上实现;该方法重点描述通过多个任务执行模块从所述第一任务派发模块中获取所述待执行任务,以执行所述待执行任务的具体过程(通过下述步骤S706-S710实现);如图7所示,该方法包括如下具体步骤:
步骤S702,获取待执行任务。
步骤S704,将该待执行任务存储至第一任务派发模块。
步骤S706,通过多个任务执行模块监听上述第一任务派发模块是否新增待执行任务。
在具体实现时,上述步骤S706,可以通过下述步骤10-11实现:
步骤10,基于每个任务执行模块,对第一任务派发模块中的元数据的描述信息进行监听。该元数据的描述信息可以是针对第一任务派发模块中存储数据(相当于存储的任务)的组织、数据域及其关系的描述信息。
步骤11,当监听到第一任务派发模块中新增有元数据的描述信息时,确定该第一任务派发模块有新增待执行任务。
通过监听该元数据的描述信息的变化,可以判定第一任务派发模块是否新增有待执行任务。
步骤S708,如果是,通过多个任务执行模块向第一任务派发模块发送争抢任务操作。
该争抢操作相当于上述多个任务执行模块向第一任务派发模块发送的任务获取请求,也即是争抢第一任务派发模块中新增的待执行任务。
步骤S710,通过获得新增的待执行任务的任务执行模块执行该待执行任务。
在具体实现时,在通过获得新增的所述待执行任务的所述任务执行模块执行所述待执行任务之前,可以基于多个任务执行模块的负载状态和争抢任务操作,通过第一任务派发模块确定以执行待执行任务的任务执行模块。
上述负载状态与任务执行模块的资源空闲量有关,也即是任务执行模块的负载量越大,资源空闲量越小。第一任务派发模块可以将资源空闲量较大,且发送争抢操作较快的任务执行模块,确定为执行待执行任务的任务执行模块。
上述任务调度方法中,任务执行模块主动从第一任务派发模块中争抢任务,相较于任务队列按照工作节点的排列顺序将各个任务分配给各个工作节点的方式,该方式提高了任务分配的灵活性,同时也提高了任务执行的效率。
具体地,上述第一任务派发模块中预设有多级任务存储目录,用于存储待执行任务;该第一任务派发模块可以预设的数据库获取待执行任务,根据该待执行任务的任务属性,从任务存储目录中确定目标路径,将该待执行任务添加至任务存储目录中的目标路径。
第一任务派发模块中的任务存储目录,包括Zookeeper模式的任务存储目录和/或ETCD模式的任务存储目录。
在具体实现时,上述第一任务派发模块可以将执行待执行任务的任务执行模块的模块标识,与待执行任务关联保存。
多个任务执行模块中,任意两个任务执行模块通信连接;该多个任务执行模块中的每个所述任务执行模块,可以监听除当前任务执行模块以外的目标任务执行模块的任务执行状态;如果目标任务执行模块的任务执行状态满足第一预设条件,并且当前任务执行模块的任务执行状态满足第二预设条件,执行目标任务执行模块中的指定任务。
在具体实现时,任务调度系统中的第二任务派发模块从预设的数据库获取待执行任务;通过预设的派发器,将待执行任务分配至多个任务执行模块中的一个任务执行模块,以通过分配到所述待执行任务的任务执行模块,执行该待执行任务。
任务调度系统中的任务管理器可以从数据库获取待执行任务,向第一任务派发模块和/或第二任务派发模块分别发布待执行任务。
本发明实施例所提供的任务调度方法,其实现原理及产生的技术效果和前述任务调度系统实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述系统实施例中相应内容。
本发明实施例还提供了一种服务器,参见图8所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器执行机器可执行指令以运行上述任务调度系统。
进一步地,图8所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
上述处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器运行上述任务调度系统,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的任务调度系统、方法和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的系统,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种任务调度系统,其特征在于,所述系统包括第一任务派发模块和多个任务执行模块;所述第一任务派发模块与所述多个任务执行模块通信连接;
所述第一任务派发模块用于存储待执行任务;
所述多个任务执行模块用于:从所述第一任务派发模块中获取所述待执行任务,通过获取到所述待执行任务的任务执行模块,执行所述待执行任务。
2.根据权利要求1所述的系统,其特征在于,所述第一任务派发模块中预设有多级任务存储目录,用于存储所述待执行任务;
所述第一任务派发模块还用于:
从预设的数据库获取所述待执行任务;
根据所述待执行任务的任务属性,从所述任务存储目录中确定目标路径,将所述待执行任务添加至所述任务存储目录中的所述目标路径。
3.根据权利要求1所述的系统,其特征在于,所述多个任务执行模块还用于:
每个所述任务执行模块均监听所述第一任务派发模块中是否添加新的待执行任务,如果监听到添加新的待执行任务,获取所述新的待执行任务;其中,所述多个任务执行模块中最多一个任务执行模块获取到所述新的待执行任务;
通过获取到所述新的待执行任务的任务执行模块,执行所述新的待执行任务。
4.根据权利要求1所述的系统,其特征在于,所述第一任务派发模块还用于:将执行所述待执行任务的任务执行模块的模块标识,与所述待执行任务关联保存。
5.根据权利要求1所述的系统,其特征在于,所述多个任务执行模块中,任意两个任务执行模块通信连接;所述多个任务执行模块中的每个所述任务执行模块,用于:
监听除当前任务执行模块以外的目标任务执行模块的任务执行状态;
如果所述目标任务执行模块的任务执行状态满足第一预设条件,并且所述当前任务执行模块的任务执行状态满足第二预设条件,执行所述目标任务执行模块中的指定任务。
6.根据权利要求2所述的系统,其特征在于,所述第一任务派发模块中的所述任务存储目录,包括Zookeeper模式的任务存储目录和/或ETCD模式的任务存储目录。
7.根据权利要求1所述的系统,其特征在于,所述系统还包括第二任务派发模块;
所述第二任务派发模块用于:
从预设的数据库获取所述待执行任务;
通过预设的派发器,将所述待执行任务分配至所述多个任务执行模块中的一个任务执行模块,以通过分配到所述待执行任务的任务执行模块,执行所述待执行任务。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括任务管理器;所述任务管理器分别与所述数据库、所述第一任务派发模块和第二任务派发模块通信连接;
所述任务管理器用于从所述数据库获取待执行任务,向所述第一任务派发模块和/或所述第二任务派发模块分别发布所述待执行任务。
9.一种任务调度方法,其特征在于,所述方法应用于权利要求1-8任一项所述的任务调度系统;所述方法包括:
获取待执行任务,并将所述待执行任务存储至第一任务派发模块;
通过多个任务执行模块从所述第一任务派发模块中获取所述待执行任务,以执行所述待执行任务。
10.根据权利要求9所述的方法,其特征在于,所述通过多个任务执行模块从所述第一任务派发模块中获取所述待执行任务,以执行所述待执行任务的步骤,包括:
通过所述多个任务执行模块监听所述第一任务派发模块是否新增所述待执行任务;
如果是,通过多个任务执行模块向所述第一任务派发模块发送争抢任务操作;
通过获得新增的所述待执行任务的所述任务执行模块执行所述待执行任务。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述通过获得新增的所述待执行任务的所述任务执行模块执行所述待执行任务之前,基于所述多个任务执行模块的负载状态和所述争抢任务操作,通过所述第一任务派发模块确定以执行所述待执行任务的任务执行模块。
12.根据权利要求10所述的方法,其特征在于,所述通过所述多个任务执行模块监听所述第一任务派发模块是否新增所述待执行任务的步骤,包括:
基于每个任务执行模块,对所述第一任务派发模块中的元数据的描述信息进行监听;
当监听到所述第一任务派发模块中新增有所述元数据的描述信息时,确定所述第一任务派发模块有新增所述待执行任务。
13.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以运行权利要求1-8任一项所述的任务调度系统。
14.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器运行权利要求1-8任一项所述的任务调度系统。
CN201911333205.0A 2019-12-19 2019-12-19 任务调度系统、方法和服务器 Pending CN111008071A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911333205.0A CN111008071A (zh) 2019-12-19 2019-12-19 任务调度系统、方法和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911333205.0A CN111008071A (zh) 2019-12-19 2019-12-19 任务调度系统、方法和服务器

Publications (1)

Publication Number Publication Date
CN111008071A true CN111008071A (zh) 2020-04-14

Family

ID=70116745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911333205.0A Pending CN111008071A (zh) 2019-12-19 2019-12-19 任务调度系统、方法和服务器

Country Status (1)

Country Link
CN (1) CN111008071A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897638A (zh) * 2020-07-27 2020-11-06 广州虎牙科技有限公司 分布式任务调度方法及系统
CN113032119A (zh) * 2021-03-23 2021-06-25 北京三快在线科技有限公司 一种任务调度方法、装置、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294386A (zh) * 2015-05-19 2017-01-04 北大方正集团有限公司 任务分配执行方法及系统
CN106406983A (zh) * 2015-07-27 2017-02-15 阿里巴巴集团控股有限公司 一种集群中的任务调度方法及装置
CN107168806A (zh) * 2017-06-29 2017-09-15 上海联影医疗科技有限公司 分发调度机的资源调度方法、系统以及计算机设备
CN110162388A (zh) * 2019-04-26 2019-08-23 深圳智链物联科技有限公司 一种任务调度方法、系统及终端设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294386A (zh) * 2015-05-19 2017-01-04 北大方正集团有限公司 任务分配执行方法及系统
CN106406983A (zh) * 2015-07-27 2017-02-15 阿里巴巴集团控股有限公司 一种集群中的任务调度方法及装置
CN107168806A (zh) * 2017-06-29 2017-09-15 上海联影医疗科技有限公司 分发调度机的资源调度方法、系统以及计算机设备
CN110162388A (zh) * 2019-04-26 2019-08-23 深圳智链物联科技有限公司 一种任务调度方法、系统及终端设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897638A (zh) * 2020-07-27 2020-11-06 广州虎牙科技有限公司 分布式任务调度方法及系统
CN111897638B (zh) * 2020-07-27 2024-04-19 广州虎牙科技有限公司 分布式任务调度方法及系统
CN113032119A (zh) * 2021-03-23 2021-06-25 北京三快在线科技有限公司 一种任务调度方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
US11704144B2 (en) Creating virtual machine groups based on request
US11586673B2 (en) Data writing and reading method and apparatus, and cloud storage system
CN110941481A (zh) 资源调度方法、装置及系统
WO2017016423A1 (zh) 一种实时新增数据更新方法和装置
US8843632B2 (en) Allocation of resources between web services in a composite service
CN109710406B (zh) 数据分配及其模型训练方法、装置、及计算集群
CN109901798B (zh) 数据存储方法及装置
CN106844055B (zh) 一种任务的执行方法和装置
CN108574645B (zh) 一种队列调度方法及装置
EP2998862A1 (en) Method, device, and system for memory management
US20190004844A1 (en) Cloud platform construction method and cloud platform
CN111782134A (zh) 数据处理方法、装置、系统和计算机可读存储介质
CN112269661B (zh) 基于Kafka集群的分区迁移方法和装置
CN111008071A (zh) 任务调度系统、方法和服务器
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
CN112395269A (zh) MySQL高可用组的搭建方法及装置
CN106571935B (zh) 一种资源调度的方法与设备
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
CN111338778B (zh) 任务调度方法、装置、存储介质及计算机设备
CN113965538B (zh) 设备状态消息处理方法、装置及存储介质
CN111221847B (zh) 监控数据存储方法、装置及计算机可读存储介质
CN110681159A (zh) 一种组队方法、装置及设备
CN112631727A (zh) 一种容器组pod的监控方法及装置
CN113268327A (zh) 事务请求的处理方法、装置和电子设备
CN112910988A (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