CN111897638B - 分布式任务调度方法及*** - Google Patents
分布式任务调度方法及*** Download PDFInfo
- Publication number
- CN111897638B CN111897638B CN202010732336.2A CN202010732336A CN111897638B CN 111897638 B CN111897638 B CN 111897638B CN 202010732336 A CN202010732336 A CN 202010732336A CN 111897638 B CN111897638 B CN 111897638B
- Authority
- CN
- China
- Prior art keywords
- task
- target
- node
- state
- metadata
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 238000012545 processing Methods 0.000 claims abstract description 44
- 238000013507 mapping Methods 0.000 claims description 43
- 230000006854 communication Effects 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 20
- 230000000007 visual effect Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种分布式任务调度方法及***。
背景技术
目前,用户在开发应用程序时,需要通过任务调度***在服务器集群上并行运行应用程序,以完善应用开发。
现有技术中,常用的任务调度***为主从结构的Yarn,但是,Yarn使用起来难度比较大,对开发功底不太好的用户不够友好。并且,对于业务代码逻辑比较简单的应用程序,开发工作量较大,开发效率比较低,同时,由于Yarn在启动任务的时候需要先申请资源,因此主节点的计算量比较重,不仅无法满足高并发的需求,还可能由于主节点故障导致***宕机。
发明内容
本发明实施例提供一种分布式任务调度方法及***,通过工作节点主动向主节点请求任务类型以及任务数量,实现了任务调度的高并发。
第一方面,本发明实施例提供了一种分布式任务调度方法,方法由分布式调度***中包括的工作节点执行,分布式调度***中包括多个主节点,方法包括:
定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储;
在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;
向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈。
可选的,还包括:
在检测到任务状态上报条件时,获取当前处理的至少一项任务的任务状态信息,任务状态信息中包括:任务标识与任务状态之间的映射关系;
向在多个主节点中确定的第二目标主节点发送任务状态信息,任务状态信息用于指示第二目标主节点对接收到的任务状态信息进行存储。
可选的,在向在多个主节点中确定的第一目标主节点发送任务获取请求之后,还包括:
如果在第一等待时长内未接收到第一目标主节点反馈的任务,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送任务获取请求;和/或
如果在第二等待时长内未收到第二目标主节点反馈的任务状态更新成功响应,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送当前的任务状态信息。
第二方面,本发明实施例还提供了一种分布式任务调度方法,方法由分布式调度***中包括的主节点执行,分布式调度***中包括多个主节点,方法包括:
根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;
其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;
根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;
获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点。
可选的,获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点,包括:
根据目标任务类型,查询状态数据库,获取与目标任务类型匹配的目标待分配任务列表;状态数据库中存储有与各任务类型分别对应的待分配任务标识列表;
在目标待分配任务列表中,获取与目标任务请求数匹配的任务标识集合;
向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点,元数据库中存储有任务标识与任务的元数据之间的映射关系。
可选的,还包括:
根据第三目标工作节点发送的状态上报信息,查询状态数据库,获取与第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合;
其中,状态数据库中存储有与各工作节点分别对应的当前执行任务标识集合和已分配任务状态集合;
在状态上报信息中,提取任务状态为结束的各任务标识,并将各任务标识从目标当前执行任务标识集合中移除;
根据状态上报信息中包括的各任务标识的任务状态,更新目标已分配任务状态集合,并在更新结果中加入状态上报信息的心跳时间戳;
和/或
在向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点之后,还包括:
根据任务标识集合,更新与第二目标节点对应的当前执行任务标识集合和已分配任务状态集合。
第三方面,本发明实施例还提供了一种分布式任务调度***,包括:多个工作节点、多个主节点、状态数据库以及元数据库,主节点,分别与各工作节点、状态数据库以及元数据库通信连接,其中:
工作节点,用于执行如本发明任意实施例提供的应用于工作节点的分布式任务调度方法;
主节点,用于执行如本发明任意实施例提供的应用于主节点的分布式任务调度方法;
状态数据库,用于存储与各任务类型分别对应的待分配任务标识列表、与各工作节点分别对应的当前执行任务标识集合以及已分配任务状态集合;
元数据库,用于存储任务标识与任务的元数据之间的映射关系,以及工作节点与节点参数之间的映射关系,节点参数包括:任务类型以及任务负载总量。
可选的,还包括:前端操作平台,前端操作平台分别与元数据库以及状态数据库通信连接;
前端操作平台,用于根据用户在可视化的任务操作界面中配置的任务参数,生成与任务参数匹配的多个任务的元数据,并将任务的元数据和任务标识之间的对应关系存储至元数据库中;
根据用户在任务操作界面配置的至少一项任务类型,确定与各任务分别对应的任务类型,并将任务类型与任务标识之间的对应关系存储于状态数据库中。
可选的,前端操作平台还用于:
根据用户在任务操作界面配置的节点参数配置信息,生成工作节点与节点参数之间的映射关系,并将映射关系存储于元数据库中;
其中,节点参数包括:任务类型以及任务负载总量。
可选的,前端操作平台还用于:
响应于用户在任务操作界面中输入的针对目标任务的状态查询请求,从元数据库中获取与目标任务匹配的目标元数据,并从状态数据库的各已分配任务状态集合中,获取与目标任务匹配的当前任务状态以及最近一次更新状态时的心跳时间戳,进行可视化显示;和/或
前端操作平台还用于:响应于用户在任务操作界面中输入的针对目标工作节点输入的状态查询请求,从状态数据库中,获取与目标工作节点匹配的当前执行任务标识集合以及已分配任务状态集合,进行可视化显示。
本发明实施例提供了一种分布式任务调度方法及***,工作节点定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储,在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度。
附图说明
图1是本发明实施例一中的一种分布式任务调度方法的流程图;
图2是本发明实施例二中的一种分布式任务调度方法的流程图;
图3是本发明实施例三中的一种分布式任务调度方法的时序图;
图4是本发明实施例四中的一种分布式任务调度装置的结构示意图;
图5是本发明实施例五中的一种分布式任务调度装置的结构示意图;
图6是本发明实施例六中的一种分布式任务调度***的结构示意图;
图7是本发明实施例七中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一中的一种分布式任务调度方法的流程图,本实施例可适用于工作节点主动向主节点请求任务,以实现任务高并发调度的情况,该方法可以由分布式任务调度装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在分布式调度***中包括的工作节点中。如图1所示,该方法由分布式调度***中包括的工作节点执行,分布式调度***中包括多个主节点,该方法包括:
步骤110、定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储。
需要说明的是,本发明实施例提供的主节点与工作节点可以是服务器,主节点与工作节点之间是主从结构,各个工作节点可以和任意主节点进行通信,各主节点也可以对任意与其进行通信的工作节点提供服务。
本实施例中,由于初始化时工作节点不知道本节点的节点参数,并且,各工作节点的节点参数周期性更新,因此,为了使得工作节点在向主节点请求任务时,能够告知主节点本节点可以处理的任务类型和任务数量,工作节点需要周期性的从多个主节点中选择至少一个主节点建立通信连接,并向成功建立通信连接的主节点发送携带自身节点标识的参数获取请求,然后接收主节点针对参数获取请求反馈的任务类型和任务负载总量,并存储在本地。
本实施例中,对于给定的工作节点,可以从多个主节点中随机选择一个主节点进行连接。例如,工作节点A随机选择主节点B并向其发送通信连接建立请求,若主节点B与工作节点A成功建立通信连接,则说明主节点B是可用的,或者说是空闲的;若连接失败,则说明主节点B当前不可用。此时,工作节点A会再次随机选择一个主节点发送通信连接建立请求,直至与可用的主节点建立通信连接为止。然后,工作节点通过建立的通信连接,向所选择的可用的主节点发送参数获取请求,以获取本节点的节点参数。
步骤120、在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求。
本实施例中,工作节点获取到本节点的节点参数后,如果检测到新任务处理条件,例如,当前处理的任务已经处理完成,或者当前处理的任务处于结束状态无需继续处理等,则根据节点参数中的任务负载总量,结合本节点的处理中任务数,计算本节点当前能够处理的任务数,即请求任务数,并根据任务类型以及请求任务数生成任务获取请求。
步骤130、向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈。
其中,针对同一个工作节点,其发送参数获取请求的主节点和发送任务获取请求的第一目标主节点可能并不是同一个主节点。
本实施例中,工作节点通过主动向主节点请求指定类型和指定数量的任务,使得主节点可以直接从待处理任务中选择指定数量的指定类型的目标任务反馈给工作节点,无需通过计算为各个待处理任务查找可以处理的工作节点,减少了主节点的计算量,可以轻松实现任务高并发。
可选的,还可以包括:在检测到任务状态上报条件时,获取当前处理的至少一项任务的任务状态信息,任务状态信息中包括:任务标识与任务状态之间的映射关系;向在多个主节点中确定的第二目标主节点发送任务状态信息,任务状态信息用于指示第二目标主节点对接收到的任务状态信息进行存储。
本实施例中,工作节点在对任务进行处理的过程中,如果检测到任务状态上报条件,例如,到达任务状态上报时间,则获取当前处理任务的任务标识以及任务处理过程中产生的任务状态数据组成任务状态信息,并从多个主节点中随机选择至少一个主节点建立连接,并向成功连接的第二目标主节点发送任务状态信息,以通过第二目标主节点对任务状态信息进行存储更新。
本实施例中,工作节点在上报任务状态信息时,仅仅需要上报任务标识和任务状态数据,实现了轻量级数据传输,使得主节点需要存储更新的任务状态信息比较精简,有助于实现任务的高并发调度。
可选的,在向在多个主节点中确定的第一目标主节点发送任务获取请求之后,还可以包括:如果在第一等待时长内未接收到第一目标主节点反馈的任务,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送任务获取请求;和/或如果在第二等待时长内未收到第二目标主节点反馈的任务状态更新成功响应,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送当前的任务状态信息。
本实施例中,在工作节点向成功建立通信连接的第一目标主节点发送任务获取请求之后,如果在第一等待时长内没有接收到第一目标主节点反馈的任务,则认为第一目标主节点发生故障,两者之间的连接已断开,因此,会重新在其他主节点中随机选择主节点建立通信连接,并将连接成功的主节点作为新的目标主节点,并将该任务获取请求重新发送给新的目标主节点,以通过新的目标主节点获取任务。
并且,在工作节点向第二目标主节点发送任务状态信息之后,如果在第二等待时长内未收到第二目标主节点反馈的任务状态更新成功响应,则认为第二目标主节点发生故障,两者之间的连接已断开,因此,会重新在其他主节点中随机选择主节点建立通信连接,并将连接成功的主节点作为新的目标主节点,并将任务状态信息重新发送给新的目标主节点,以通过新的目标主节点对任务状态信息进行存储。其中,第一等待时长与第二等待时长都可以根据业务需求进行调整,并不做具体限制。
本实施例中,针对工作节点与主节点通信过程中,主节点发生故障的情况,工作节点可以及时向新的主节点重发请求,有助于实现任务的高并发调度。
本发明实施例的技术方案,工作节点定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储,在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度。
实施例二
图2是本发明实施例一中的一种分布式任务调度方法的流程图,本实施例可适用于主节点根据工作节点的任务请求进行任务调度,以实现任务高并发调度的情况,该方法可以由分布式任务调度装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在分布式调度***中包括的主节点中。如图2所示,该方法由分布式调度***中包括的主节点执行,分布式调度***中包括多个主节点,该方法包括:
步骤210、根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点。
其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量。
本实施例中,工作节点与节点参数之间的映射关系,是用户通过前端操作平台的提供的可视化的任务操作界面为写入元数据库中的。通过为各工作节点配置其可以处理的任务类型以及任务负载总量等节点参数,对工作节点进行统一管理和划分,使得工作节点在初始化之后就可以主动获取任务进行处理,无需主节点为每个待处理任务查找可以处理的工作节点。
本实施例中,主节点在接收到第一目标工作节点发送的参数获取请求之后,可以从参数获取请求中提取第一目标工作节点的节点标识,进而根据节点标识从元数据库中查询与该节点标识匹配的映射关系,根据该映射关系确定第一目标工作节点的节点参数,并将该节点参数反馈给第一目标工作节点。其中,节点参数包括任务类型以及任务负载总量,任务类型表示工作节点可以处理的任务的类型,任务类型可以根据任务的并发数量划分,或者根据任务占用的资源数量划分,或者根据其他因素划分;任务负载总量表示工作节点可以并行处理任务的最大数量。
步骤220、根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型。
本实施例中,主节点在接收到第二目标工作节点发送的任务获取请求后,从该任务获取请求中提取与第二目标工作节点对应的节点参数,确定第二目标工作节点所要请求的任务类型以及任务请求数。
步骤230、获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点。
可选的,获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点,可以包括:根据目标任务类型,查询状态数据库,获取与目标任务类型匹配的目标待分配任务列表;状态数据库中存储有与各任务类型分别对应的待分配任务标识列表;在目标待分配任务列表中,获取与目标任务请求数匹配的任务标识集合;向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点,元数据库中存储有任务标识与任务的元数据之间的映射关系。
本实施例中,主节点在从接收的任务获取请求中提取到目标任务类型以及目标任务请求数之后,可以根据目标任务类型,在状态数据库中查找与目标任务类型匹配的目标待分配任务列表,目标待分配任务列表中包括多个处于就绪状态的任务标识,并从目标待分配任务列表中选择目标任务请求数个任务标识作为目标任务标识,然后从元数据库中查找与各目标任务标识对应的任务元数据,并将各任务元数据返回给第二目标工作节点,以使第二目标工作节点根据各任务元数据获取对应的任务进行处理。
本实施例中,状态数据库中只存储与各任务类型分别对应的待分配任务标识,存储的数据比较精简,属于轻量级数据存储,有助于实现任务的高并发调度。并且,主节点通过接收工作节点主动发送的任务获取请求,可以直接将与任务获取请求匹配的待处理任务分配给工作节点,无需轮询各个工作节点进行相关计算,即可对各个待处理任务进行分配,减少了主节点的计算量,可以轻松实现任务高并发。
可选的,还可以包括:根据第三目标工作节点发送的状态上报信息,查询状态数据库,获取与第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合;其中,状态数据库中存储有与各工作节点分别对应的当前执行任务标识集合和已分配任务状态集合;在状态上报信息中,提取任务状态为结束的各任务标识,并将各任务标识从目标当前执行任务标识集合中移除;根据状态上报信息中包括的各任务标识的任务状态,更新目标已分配任务状态集合,并在更新结果中加入状态上报信息的心跳时间戳;和/或
在向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点之后,还可以包括:根据任务标识集合,更新与第二目标节点对应的当前执行任务标识集合和已分配任务状态集合。
本实施例中,状态数据库中还存储有与各工作节点分别对应的当前执行任务标识集合和已分配任务状态集合,分别记录各个工作节点当前处理任务的任务标识,以及各个工作节点上报的在处理任务过程中产生的任务状态信息。当主节点接收到第三目标工作节点发送的状态上报信息之后,从状态上报信息中获取第三目标工作节点的节点标识,并根据节点标识查询状态数据库,获取与第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合,然后从状态上报信息中提取各任务标识的任务状态,并将结束状态的任务标识从目标当前执行任务标识集合中移除,表示该任务已经处理完成,或者该任务已经无需处理。并且,将状态上报信息中包括的与各任务标识对应的任务状态信息,更新到目标已分配任务状态集合中,并在更新结果中加入状态上报信息的心跳时间戳,记录各任务在各个时间段内的执行情况。
本实施例中,为了记录各个工作节点当前处理的任务,以及***中的任务的分配情况,主节点在将与任务标识集合匹配的任务的元数据反馈给第二目标工作节点之后,会将任务标识集合中包括的各个任务标识更新到与第二目标节点对应的当前执行任务标识集合和已分配任务状态集合,以分别记录第二目标节点当前处理任务的任务标识,以及第二目标节点在处理任务过程中产生的任务状态信息。
本实施例中,状态数据库中存储有与各工作节点分别对应的当前执行任务标识集合和已分配任务状态集合,存入状态数据库的内容很精简,属于轻量级数据存储,从而主节点在工作节点上报任务状态信息时要做的工作很少,有助于实现任务的高并发调度。
本发明实施例的技术方案,主节点根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度,并且,通过精简存入状态数据库的数据,实现任务状态汇报的轻量化,提高通信速度,进一步提高***支持的任务并发度。
实施例三
图3是本发明实施例三中的一种分布式任务调度方法的时序图,本实施例可以与上述实施例中各个可选方案结合。具体的,参考图3,该方法可以包括如下步骤:
首先,用户在前端操作平台提供的可视化的任务操作界面上,为指定任务配置初始化任务参数,例如,处理该任务的工作节点,工作节点可以处理的任务类型以及任务负载量等。
然后,前端操作平台将该任务设置为就绪状态,并将该任务的任务标识以及对应的任务状态存入状态数据库中。在收到状态数据库返回的确认响应后,根据用户为该任务配置的初始化任务参数,例如,任务的获取地址、任务类型等,构造对应的任务元数据存入元数据库中。在收到元数据库返回的确认响应后,将该任务的任务标识加入到状态数据库中与该任务类型匹配的待分配任务标识列表中,等待被工作节点处理,任务上线过程完成。
其中,用户提交一个任务之后,会产生很多子任务,例如,利用爬网页的脚本去抓取目标词条时,会从目标网页的分类条目下抓取到各种新词条的链接,每个链接对应一个需要抓取的页面,从而产生很多子任务,将等待执行的各个子任务添加到状态数据库中的待分配任务标识列表中等待处理。
接着,工作节点会从多个主节点中随机选择主节点建立连接,并向成功连接的主节点申请注册,获取用户为本节点设置的节点参数,例如,工作节点可以处理的任务类型以及任务负载总量。
其中,主节点启动后,会开启一个接口来接收工作节点发送的请求,如果主节点空闲可用,则工作节点可以与该主节点成功建立连接。并且,当主节点故障时,工作节点与故障主节点之间的连接会自动断开,工作节点会重新选择其他空闲的主节点进行通信。
然后,工作节点再次从多个主节点中随机选择主节点建立连接,并向成功连接的主节点发送携带任务类型以及任务请求数的任务获取请求,主节点从状态数据库中的待分配任务标识列表中,获取与接收的任务获取请求匹配的目标任务标识,并从元数据库中获取与各目标任务标识匹配的目标元数据,将目标元数据返回给发送任务获取请求的工作节点。
接着,工作节点根据目标元数据中的任务获取地址获取目标任务,并根据目标元数据中的任务详细信息对目标任务进行处理。工作节点周期性的选择主节点建立连接,并向成功连接的主节点反馈当前周期内各当前处理任务产生的任务状态信息。主节点将接收到的任务状态信息存储到状态数据库中,进行任务状态信息的更新,并且,如果主节点根据任务状态信息确定当前任务的状态为结束状态,则向发送任务状态信息的工作节点发送任务结束指令,以终止该工作节点对当前任务的处理。
其中,工作节点在结束当前任务后,会触发新任务处理条件,会再次从多个主节点中随机选择主节点建立连接,并向成功连接的主节点发送任务获取请求,以继续处理任务。
本实施例中,针对用户将任务下线的情况,首先,当用户在前端操作平台上将当前任务下线后,前端操作平台会将状态数据库中的当前任务的任务状态改为结束状态,向处理当前任务的工作节点发送任务结束指令,并将当前任务的任务标识移到结束队列中,完成任务下线。
其中,前端操作平台与多个主节点共享同一个状态数据库。
其中,工作节点接收到任务结束指令后,会从多个主节点中随机选择主节点建立连接,并将当前任务状态信息发送至成功连接的主节点,主节点将接收的当前任务状态信息发送到状态数据库,并向工作节点发送任务结束指令。
最后,主节点根据当前任务的任务标识,从状态数据库和元数据库中分别获取与当前任务对应的有效信息,生成有效任务记录,并存储至展示列表中,以供用户查看当前任务的运行状态信息,然后将状态数据库和元数据库中存储的当前任务的数据删除,以减少内存占用。
实施例四
图4是本发明实施例四中的一种分布式任务调度装置的结构示意图。本实施例可适用于工作节点主动向主节点请求任务,以实现任务高并发调度的情况,该装置可以由软件和/或硬件来实现,并一般可以集成在分布式调度***中包括的工作节点中。如图4所示,该装置包括:
参数获取模块410,用于定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储;
构造模块420,用于在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;
发送模块430,用于向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈。
本发明实施例的技术方案,工作节点定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储,在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度。
可选的,还包括:状态上报模块,用于在检测到任务状态上报条件时,获取当前处理的至少一项任务的任务状态信息,任务状态信息中包括:任务标识与任务状态之间的映射关系;向在多个主节点中确定的第二目标主节点发送任务状态信息,任务状态信息用于指示第二目标主节点对接收到的任务状态信息进行存储。
可选的,还包括:重发模块,用于在向在多个主节点中确定的第一目标主节点发送任务获取请求之后,如果在第一等待时长内未接收到第一目标主节点反馈的任务,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送任务获取请求;和/或
如果在第二等待时长内未收到第二目标主节点反馈的任务状态更新成功响应,则重新在多个主节点中确定新的目标主节点,并重新向新的目标主节点发送当前的任务状态信息。
本发明实施例所提供的分布式任务调度装置可执行本发明任意实施例所提供的应用于工作节点的分布式任务调度方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5是本发明实施例五中的一种分布式任务调度装置的结构示意图。本实施例可适用于主节点根据工作节点的任务请求进行任务调度,以实现任务高并发调度的情况,该装置可以由软件和/或硬件来实现,并一般可以集成在分布式调度***中包括的主节点中。如图5所示,该装置包括:
参数反馈模块510,用于根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;
其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;
参数提取模块520,用于根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;
任务反馈模块530,用于获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点。
本发明实施例的技术方案,主节点根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度,并且,通过精简存入状态数据库的数据,实现任务状态汇报的轻量化,提高通信速度,进一步提高***支持的任务并发度。
可选的,任务反馈模块530,具体用于:根据目标任务类型,查询状态数据库,获取与目标任务类型匹配的目标待分配任务列表;状态数据库中存储有与各任务类型分别对应的待分配任务标识列表;在目标待分配任务列表中,获取与目标任务请求数匹配的任务标识集合;向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点,元数据库中存储有任务标识与任务的元数据之间的映射关系。
可选的,还包括:第一更新模块,用于根据第三目标工作节点发送的状态上报信息,查询状态数据库,获取与第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合;其中,状态数据库中存储有与各工作节点分别对应的当前执行任务标识集合和已分配任务状态集合;在状态上报信息中,提取任务状态为结束的各任务标识,并将各任务标识从目标当前执行任务标识集合中移除;根据状态上报信息中包括的各任务标识的任务状态,更新目标已分配任务状态集合,并在更新结果中加入状态上报信息的心跳时间戳;和/或
还包括,第二更新模块,用于在向元数据库中请求与任务标识集合匹配的任务的元数据,并将任务的元数据反馈给第二目标工作节点之后,根据任务标识集合,更新与第二目标节点对应的当前执行任务标识集合和已分配任务状态集合。
本发明实施例所提供的分布式任务调度装置可执行本发明任意实施例所提供的应用于主节点的分布式任务调度方法,具备执行方法相应的功能模块和有益效果。
实施例六
图6是本发明实施例六中的一种分布式任务调度***的结构示意图,本实施例可适用于对任务进行高并发调度的情况。如图6所示,该***包括:多个工作节点610、多个主节点620、状态数据库630以及元数据库640,主节点620,分别与各工作节点610、状态数据库630以及元数据库640通信连接,其中:
工作节点610,用于执行如本发明任意实施例提供的应用于工作节点的分布式任务调度方法;
主节点620,用于执行如本发明任意实施例提供的应用于主节点的分布式任务调度方法;
状态数据库630,用于存储与各任务类型分别对应的待分配任务标识列表、与各工作节点分别对应的当前执行任务标识集合以及已分配任务状态集合;
元数据库640,用于存储任务标识与任务的元数据之间的映射关系,以及工作节点与节点参数之间的映射关系,节点参数包括:任务类型以及任务负载总量。
本实施例中,通过设置多个主节点,并且每个主节点都可以对任意与其进行通信的工作节点提供服务,可以避免由于单个主节点故障,导致整个***瘫痪,无法正常工作的情况,提高***的稳定性。
可选的,工作节点610,用于定期向至少一个主节点发送参数获取请求,并接收所述主节点反馈的任务类型和任务负载总量进行本地存储;在检测到新任务处理条件时,根据处理中任务数和所述任务负载总量,计算请求任务数,并根据所述请求任务数和所述任务类型,构造任务获取请求;向在所述多个主节点中确定的第一目标主节点发送所述任务获取请求,所述任务获取请求用于指示所述第一目标主节点获取与所述请求任务数和所述任务类型匹配的任务进行反馈。
可选的,工作节点610,还用于:在检测到任务状态上报条件时,获取当前处理的至少一项任务的任务状态信息,所述任务状态信息中包括:任务标识与任务状态之间的映射关系;向在所述多个主节点中确定的第二目标主节点发送所述任务状态信息,所述任务状态信息用于指示所述第二目标主节点对接收到的任务状态信息进行存储。
可选的,工作节点610,还用于:在向在所述多个主节点中确定的第一目标主节点发送所述任务获取请求之后,如果在第一等待时长内未接收到所述第一目标主节点反馈的任务,则重新在所述多个主节点中确定新的目标主节点,并重新向所述新的目标主节点发送所述任务获取请求;和/或
如果在第二等待时长内未收到所述第二目标主节点反馈的任务状态更新成功响应,则重新在所述多个主节点中确定新的目标主节点,并重新向所述新的目标主节点发送当前的任务状态信息。
可选的,主节点620,用于根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与所述参数获取请求匹配的任务类型以及任务负载总量反馈给所述第一目标工作节点;其中,元数据库中存储有工作节点与节点参数之间的映射关系,所述映射关系为用户通过前端操作平台写入所述元数据库中的;所述节点参数包括:任务类型以及任务负载总量;根据第二目标工作节点发送的任务获取请求,提取与所述任务获取请求匹配的目标任务请求数以及目标任务类型;获取与所述目标任务请求数以及目标任务类型匹配的任务反馈给所述第二目标节点。
可选的,主节点620,具体用于:根据所述目标任务类型,查询状态数据库,获取与所述目标任务类型匹配的目标待分配任务列表;所述状态数据库中存储有与各任务类型分别对应的待分配任务标识列表;在所述目标待分配任务列表中,获取与所述目标任务请求数匹配的任务标识集合;向元数据库中请求与所述任务标识集合匹配的任务的元数据,并将所述任务的元数据反馈给所述第二目标工作节点,所述元数据库中存储有任务标识与任务的元数据之间的映射关系。
可选的,主节点620,还用于:根据第三目标工作节点发送的状态上报信息,查询所述状态数据库,获取与所述第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合;其中,所述状态数据库中存储有与各所述工作节点分别对应的当前执行任务标识集合和已分配任务状态集合;在所述状态上报信息中,提取任务状态为结束的各任务标识,并将所述各任务标识从所述目标当前执行任务标识集合中移除;根据所述状态上报信息中包括的各任务标识的任务状态,更新所述目标已分配任务状态集合,并在更新结果中加入所述状态上报信息的心跳时间戳;和/或
主节点620,还用于:在向元数据库中请求与所述任务标识集合匹配的任务的元数据,并将所述任务的元数据反馈给所述第二目标工作节点之后,根据所述任务标识集合,更新与所述第二目标节点对应的当前执行任务标识集合和已分配任务状态集合。
本实施例中,状态数据库630中包括与各任务类型分别对应的待分配任务标识列表,各待分配任务标识列表中存储有与指定任务类型对应的待处理任务的任务标识,其中,任务标识用于区分不同的任务。元数据库640用于存储与待处理任务的任务标识对应的任务的元数据,以及与工作节点的节点标识对应的节点参数,其中,任务的元数据可以包括与任务标识对应的任务获取地址、任务类型等初始化配置的任务参数,也可以包括用户提交任务的时间等任务提交信息。
本实施例中,为了使得各个主节点620都可以为工作节点610提供服务,设置多个主节点620共享状态数据库630和元数据库640,从而各个主节点610都可以根据任务标识,从状态数据库和/或元数据库中获取相关数据。
本实施例中,主节点620在从接收的任务获取请求中提取到目标任务类型以及目标任务请求数之后,可以根据目标任务类型,在状态数据库630中查找与目标任务类型匹配的目标待分配任务列表,目标待分配任务列表中包括多个处于就绪状态的任务标识,并从目标待分配任务列表中选择目标任务请求数个任务标识作为目标任务标识,然后从元数据库640中查找与各目标任务标识对应的任务的元数据,并将各任务的元数据返回给第二目标工作节点,以使第二目标工作节点根据各任务元数据获取对应的任务进行处理。
本实施例中,状态数据库中只存储与各任务类型分别对应的待分配任务标识,存储的数据比较精简,属于轻量级数据存储,有助于实现任务的高并发调度。并且,主节点通过接收工作节点主动发送的任务获取请求,可以直接将与任务获取请求匹配的待处理任务分配给工作节点,无需轮询各个工作节点进行相关计算,即可对各个待处理任务进行分配,减少了主节点的计算量,可以轻松实现任务高并发。
可选的,还包括:前端操作平台650,前端操作平台650分别与元数据库640以及状态数据库630通信连接;
前端操作平台650,用于根据用户在可视化的任务操作界面中配置的任务参数,生成与任务参数匹配的多个任务的元数据,并将任务的元数据和任务标识之间的对应关系存储至元数据库中;根据用户在任务操作界面配置的至少一项任务类型,确定与各任务分别对应的任务类型,并将任务类型与任务标识之间的对应关系存储于状态数据库中。
本实施例中,前端操作平台650是面向用户的,可以向用户提供可视化的任务操作界面,用户只需在任务操作界面上进行简单的点击操作,就可以实现对任务的相关配置,例如,设置任务的类型、选择合适的工作节点来处理任务等,同时,屏蔽了用户对分布式任务调度***的繁琐功能的开发,使得***具有易用性。
本实施例中,前端操作平台650可以通过可视化的任务操作界面获取用户为上线任务配置的初始化任务参数,例如,任务的获取地址、任务类型为第一类任务、工作节点D-F处理等,然后根据用户配置的任务参数以及用户提交任务的时间等信息构造对应的任务的元数据,并将任务的元数据以及任务标识对应存储至元数据库640中。同时,为了便于主节点查询与指定任务类型对应的待处理任务,在用户对任务上线之后,确定与各任务分别对应的任务类型,并将任务类型与任务标识之间的对应关系存储于状态数据库630中。
可选的,前端操作平台650还用于:根据用户在任务操作界面配置的节点参数配置信息,生成工作节点与节点参数之间的映射关系,并将映射关系存储于元数据库中;其中,节点参数包括:任务类型以及任务负载总量。
本实施例中,用户在通过可视化的任务操作界面为任务配置初始化任务参数时,可以选择指定工作节点处理该任务,并为选择的工作节点配置节点参数,例如,工作节点可以处理的任务类型以及任务负载总量等,从而可以对工作节点进行统一管理和划分,使得工作节点在初始化之后就可以获取任务进行处理,避免主节点为每个任务查找可以处理的工作节点。
可选的,前端操作平台650还用于:响应于用户在任务操作界面中输入的针对目标任务的状态查询请求,从元数据库中获取与目标任务匹配的目标元数据,并从状态数据库的各已分配任务状态集合中,获取与目标任务匹配的当前任务状态以及最近一次更新状态时的心跳时间戳,进行可视化显示;和/或
前端操作平台650还用于:响应于用户在任务操作界面中输入的针对目标工作节点输入的状态查询请求,从状态数据库中,获取与目标工作节点匹配的当前执行任务标识集合以及已分配任务状态集合,进行可视化显示。
本实施例中,当前端操作平台650通过可视化的任务操作界面检测到用户针对目标任务的状态查询请求时,可以从状态查询请求中提取目标任务标识,根据目标任务标识从元数据库中获取与目标任务匹配的目标元数据,并从状态数据库的各已分配任务状态集合中,获取与目标任务标识匹配的当前任务状态以及最近一次更新状态时的心跳时间戳,并通过可视化的任务操作界面将获取的数据显示给用户。
本实施例中,当前端操作平台650通过可视化的任务操作界面检测到用户针对目标工作节点输入的状态查询请求时,可以根据状态查询请求中提取的节点标识,从状态数据库中,获取与目标工作节点匹配的当前执行任务标识集合以及已分配任务状态集合,并将当前执行任务标识集合中的当前处理任务的标识,以及已分配任务状态集合中包括的各任务在处理过程中产生的任务状态信息,进行可视化显示。
本实施例中,状态数据库640可以是Redis数据库。Redis数据库以键值对的形式将数据存储到内存中,并且会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,在此基础上实现主从同步。考虑到任务状态信息对存储的性能要求很高,而任务的元数据对存储的性能要求较低,因此,将任务状态信息存与任务元数据分开存储,将任务状态信息存储到Redis数据库中,将任务元数据存储到元数据库中。
本实施例中,通过使用Redis数据库作为缓存工具,达到多个主节点和工作节点共享缓存的效果,进而实现分布式任务调度,提高任务调度的并发性。
本发明实施例提供的分布式任务调度***,通过工作节点,从多个主节点中随机选择一个主节点进行连接,并向连接成功的主节点发送任务获取请求,通过主节点,获取与接收的任务获取请求匹配的目标任务,并将目标任务返回给发送任务获取请求的工作节点,解决了现有技术中主节点主动为工作节点分配任务时计算量较大,无法满足高并发需求的问题,通过工作节点主动向主节点请求任务类型以及任务数量,减少主节点的计算量,提高***支持的任务并发度。
实施例七
图7是本发明实施例七中的一种节点设备的结构示意图。图7示出了适于用来实现本发明实施方式的示例性节点设备12的框图。图7显示的节点设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,节点设备12以通用计算设备的形式表现。节点设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
节点设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被节点设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。节点设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
节点设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该节点设备12交互的设备通信,和/或与使得该节点设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,节点设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与节点设备12的其它模块通信。应当明白,尽管图中未示出,可以结合节点设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
处理单元16通过运行存储在***存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的分布式任务调度方法。
也即:实现一种分布式任务调度方法,方法由分布式调度***中包括的工作节点执行,分布式调度***中包括多个主节点,方法包括:
定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储;
在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;
向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈。
或者,实现一种分布式任务调度方法,方法由分布式调度***中包括的主节点执行,分布式调度***中包括多个主节点,方法包括:
根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;
其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;
根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;
获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点。
实施例八
本发明实施例八还公开了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种分布式任务调度方法。
也即:实现一种分布式任务调度方法,方法由分布式调度***中包括的工作节点执行,分布式调度***中包括多个主节点,方法包括:
定期向至少一个主节点发送参数获取请求,并接收主节点反馈的任务类型和任务负载总量进行本地存储;
在检测到新任务处理条件时,根据处理中任务数和任务负载总量,计算请求任务数,并根据请求任务数和任务类型,构造任务获取请求;
向在多个主节点中确定的第一目标主节点发送任务获取请求,任务获取请求用于指示第一目标主节点获取与请求任务数和任务类型匹配的任务进行反馈。
或者,实现一种分布式任务调度方法,方法由分布式调度***中包括的主节点执行,分布式调度***中包括多个主节点,方法包括:
根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与参数获取请求匹配的任务类型以及任务负载总量反馈给第一目标工作节点;
其中,元数据库中存储有工作节点与节点参数之间的映射关系,映射关系为用户通过前端操作平台写入元数据库中的;节点参数包括:任务类型以及任务负载总量;
根据第二目标工作节点发送的任务获取请求,提取与任务获取请求匹配的目标任务请求数以及目标任务类型;
获取与目标任务请求数以及目标任务类型匹配的任务反馈给第二目标节点。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种分布式任务调度方法,其特征在于,所述方法由分布式调度***中包括的工作节点执行,所述分布式调度***中包括多个主节点,所述方法包括:
定期向至少一个主节点发送参数获取请求,并接收所述主节点反馈的任务类型和任务负载总量进行本地存储;
在检测到新任务处理条件时,根据处理中任务数和所述任务负载总量,计算请求任务数,并根据所述请求任务数和所述任务类型,构造任务获取请求;
所述新任务处理条件包括:当前处理的任务已经处理完成,或当前处理的任务处于结束状态无需继续处理;
向在所述多个主节点中确定的第一目标主节点发送所述任务获取请求,所述任务获取请求用于指示所述第一目标主节点获取与所述请求任务数和所述任务类型匹配的任务进行反馈;
所述方法还包括:
在检测到任务状态上报条件时,获取当前处理的至少一项任务的任务状态信息,所述任务状态信息中包括:任务标识与任务状态之间的映射关系;
向在所述多个主节点中确定的第二目标主节点发送所述任务状态信息,所述任务状态信息用于指示所述第二目标主节点对接收到的任务状态信息进行存储。
2.根据权利要求1所述的方法,其特征在于,在向在所述多个主节点中确定的第一目标主节点发送所述任务获取请求之后,还包括:
如果在第一等待时长内未接收到所述第一目标主节点反馈的任务,则重新在所述多个主节点中确定新的目标主节点,并重新向所述新的目标主节点发送所述任务获取请求;和/或
如果在第二等待时长内未收到所述第二目标主节点反馈的任务状态更新成功响应,则重新在所述多个主节点中确定新的目标主节点,并重新向所述新的目标主节点发送当前的任务状态信息。
3.一种分布式任务调度方法,其特征在于,所述方法由分布式调度***中包括的主节点执行,所述分布式调度***中包括多个主节点,所述方法包括:
根据第一目标工作节点发送的参数获取请求,查询元数据库,获取与所述参数获取请求匹配的任务类型以及任务负载总量反馈给所述第一目标工作节点;
其中,元数据库中存储有工作节点与节点参数之间的映射关系,所述映射关系为用户通过前端操作平台写入所述元数据库中的;所述节点参数包括:任务类型以及任务负载总量;
根据第二目标工作节点发送的任务获取请求,提取与所述任务获取请求匹配的目标任务请求数以及目标任务类型;
获取与所述目标任务请求数以及目标任务类型匹配的任务反馈给所述第二目标节点;
所述获取与所述目标任务请求数以及目标任务类型匹配的任务反馈给所述第二目标节点,包括:
根据所述目标任务类型,查询状态数据库,获取与所述目标任务类型匹配的目标待分配任务列表;所述状态数据库中存储有与各任务类型分别对应的待分配任务标识列表。
4.根据权利要求3所述的方法,其特征在于,获取与所述目标任务请求数以及目标任务类型匹配的任务反馈给所述第二目标节点,包括:在所述目标待分配任务列表中,获取与所述目标任务请求数匹配的任务标识集合;
向元数据库中请求与所述任务标识集合匹配的任务的元数据,并将所述任务的元数据反馈给所述第二目标工作节点,所述元数据库中存储有任务标识与任务的元数据之间的映射关系。
5.根据权利要求4所述的方法,其特征在于,还包括:
根据第三目标工作节点发送的状态上报信息,查询所述状态数据库,获取与所述第三目标工作节点匹配的目标当前执行任务标识集合和目标已分配任务状态集合;
其中,所述状态数据库中存储有与各所述工作节点分别对应的当前执行任务标识集合和已分配任务状态集合;
在所述状态上报信息中,提取任务状态为结束的各任务标识,并将所述各任务标识从所述目标当前执行任务标识集合中移除;
根据所述状态上报信息中包括的各任务标识的任务状态,更新所述目标已分配任务状态集合,并在更新结果中加入所述状态上报信息的心跳时间戳;
和/或
在向元数据库中请求与所述任务标识集合匹配的任务的元数据,并将所述任务的元数据反馈给所述第二目标工作节点之后,还包括:
根据所述任务标识集合,更新与所述第二目标节点对应的当前执行任务标识集合和已分配任务状态集合。
6.一种分布式任务调度***,其特征在于,包括:多个工作节点、多个主节点、状态数据库以及元数据库,所述主节点,分别与各所述工作节点、所述状态数据库以及元数据库通信连接,其中:
所述工作节点,用于执行如权利要求1-2任一项所述的方法;
所述主节点,用于执行如权利要求3-5任一项所述的方法;
所述状态数据库,用于存储与各任务类型分别对应的待分配任务标识列表、与各所述工作节点分别对应的当前执行任务标识集合以及已分配任务状态集合;
所述元数据库,用于存储任务标识与任务的元数据之间的映射关系,以及工作节点与节点参数之间的映射关系,所述节点参数包括:任务类型以及任务负载总量。
7.根据权利要求6所述的***,其特征在于,还包括:前端操作平台,所述前端操作平台分别与所述元数据库以及所述状态数据库通信连接;
所述前端操作平台,用于根据用户在可视化的任务操作界面中配置的任务参数,生成与所述任务参数匹配的多个任务的元数据,并将所述任务的元数据和任务标识之间的对应关系存储至元数据库中;
根据用户在任务操作界面配置的至少一项任务类型,确定与各所述任务分别对应的任务类型,并将任务类型与任务标识之间的对应关系存储于状态数据库中。
8.根据权利要求7所述的***,其特征在于,所述前端操作平台还用于:
根据用户在所述任务操作界面配置的节点参数配置信息,生成工作节点与节点参数之间的映射关系,并将所述映射关系存储于所述元数据库中;
其中,所述节点参数包括:任务类型以及任务负载总量。
9.根据权利要求7所述的***,其特征在于,所述前端操作平台还用于:
响应于用户在所述任务操作界面中输入的针对目标任务的状态查询请求,从所述元数据库中获取与所述目标任务匹配的目标元数据,并从所述状态数据库的各已分配任务状态集合中,获取与所述目标任务匹配的当前任务状态以及最近一次更新状态时的心跳时间戳,进行可视化显示;和/或
所述前端操作平台还用于:响应于用户在所述任务操作界面中输入的针对目标工作节点输入的状态查询请求,从所述状态数据库中,获取与所述目标工作节点匹配的当前执行任务标识集合以及已分配任务状态集合,进行可视化显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010732336.2A CN111897638B (zh) | 2020-07-27 | 2020-07-27 | 分布式任务调度方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010732336.2A CN111897638B (zh) | 2020-07-27 | 2020-07-27 | 分布式任务调度方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897638A CN111897638A (zh) | 2020-11-06 |
CN111897638B true CN111897638B (zh) | 2024-04-19 |
Family
ID=73191003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010732336.2A Active CN111897638B (zh) | 2020-07-27 | 2020-07-27 | 分布式任务调度方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897638B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395140B (zh) * | 2020-11-17 | 2023-01-17 | 平安科技(深圳)有限公司 | 去中心化的任务调度方法、装置、设备及介质 |
CN112561264A (zh) * | 2020-12-04 | 2021-03-26 | 中广核工程有限公司 | 企业内容的服务方法、服务***和存储介质 |
CN112632193A (zh) * | 2021-03-09 | 2021-04-09 | 成都虚谷伟业科技有限公司 | 一种分布式数据库集群***数据分流方法 |
CN113590298B (zh) * | 2021-08-09 | 2024-03-26 | 平安银行股份有限公司 | 一种资源调度方法、装置、服务器及存储介质 |
CN113448738B (zh) * | 2021-08-31 | 2021-11-12 | 成都派沃特科技股份有限公司 | 服务器可用度调整方法、装置、设备及存储介质 |
CN113836186B (zh) * | 2021-09-28 | 2023-10-10 | 北京环境特性研究所 | 基于es搜索引擎的仿真数据查询方法及装置 |
CN114327295A (zh) * | 2021-12-31 | 2022-04-12 | 华云数据控股集团有限公司 | 基于分布式的数据存取方法及*** |
CN114884880B (zh) * | 2022-04-06 | 2024-03-08 | 阿里巴巴(中国)有限公司 | 数据传输方法以及*** |
CN116737345A (zh) * | 2023-08-11 | 2023-09-12 | 之江实验室 | 分布式任务处理***及方法、装置、存储介质以及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324533A (zh) * | 2012-03-22 | 2013-09-25 | 华为技术有限公司 | 分布式数据处理方法、装置及*** |
CN111008071A (zh) * | 2019-12-19 | 2020-04-14 | 北京金山云网络技术有限公司 | 任务调度***、方法和服务器 |
WO2020140683A1 (zh) * | 2019-01-04 | 2020-07-09 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN111427694A (zh) * | 2020-03-26 | 2020-07-17 | 北京金山云网络技术有限公司 | 任务执行方法、装置、***和服务器 |
-
2020
- 2020-07-27 CN CN202010732336.2A patent/CN111897638B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324533A (zh) * | 2012-03-22 | 2013-09-25 | 华为技术有限公司 | 分布式数据处理方法、装置及*** |
WO2020140683A1 (zh) * | 2019-01-04 | 2020-07-09 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN111008071A (zh) * | 2019-12-19 | 2020-04-14 | 北京金山云网络技术有限公司 | 任务调度***、方法和服务器 |
CN111427694A (zh) * | 2020-03-26 | 2020-07-17 | 北京金山云网络技术有限公司 | 任务执行方法、装置、***和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111897638A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897638B (zh) | 分布式任务调度方法及*** | |
US20160275123A1 (en) | Pipeline execution of multiple map-reduce jobs | |
US20090282413A1 (en) | Scalable Scheduling of Tasks in Heterogeneous Systems | |
JP4970939B2 (ja) | マルチノードシステムにおけるリソースの動的な割当の階層的管理 | |
CN109857723B (zh) | 基于可扩容数据库集群的动态数据迁移方法及相关设备 | |
CN111679911B (zh) | 云环境中gpu卡的管理方法、装置、设备及介质 | |
CN107919987B (zh) | 一种微服务云部署的实现方法 | |
CN110874272A (zh) | 资源配置方法及装置、计算机可读存储介质、电子设备 | |
CN115640110B (zh) | 分布式云计算***调度方法和装置 | |
CN103516735A (zh) | 一种网络节点升级的方法及装置 | |
WO2024066342A1 (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN111400350B (zh) | 配置数据读取方法、***、电子设备和存储介质 | |
US7752225B2 (en) | Replication and mapping mechanism for recreating memory durations | |
CN110706148A (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN112711522B (zh) | 一种基于docker的云测试方法、***及电子设备 | |
CN113760638A (zh) | 一种基于kubernetes集群的日志服务方法和装置 | |
CN113127444B (zh) | 一种数据迁移方法、装置、服务器及存储介质 | |
US20150052242A1 (en) | Information processing system, method of controlling information processing system, and computer-readable recording medium storing control program for controller | |
US20080178182A1 (en) | Work state returning apparatus, work state returning method, and computer product | |
CN111767126A (zh) | 分布式批量处理的***和方法 | |
CN113158173B (zh) | 账号分配方法、介质、装置和计算设备 | |
CN115309558A (zh) | 一种资源调度管理***、方法、计算机设备及存储介质 | |
CN114205354A (zh) | 事件管理***、事件管理方法、服务器及存储介质 | |
CN114490000A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN111782834A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |