CN116225655A - 一种任务调度方法、装置及存储介质 - Google Patents
一种任务调度方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116225655A CN116225655A CN202310252701.3A CN202310252701A CN116225655A CN 116225655 A CN116225655 A CN 116225655A CN 202310252701 A CN202310252701 A CN 202310252701A CN 116225655 A CN116225655 A CN 116225655A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- slave
- master node
- node
- 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
Images
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
-
- 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
-
- 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)
- Multi Processors (AREA)
Abstract
本申请公开了一种任务调度方法、装置及存储介质,涉及任务调度技术领域。该方法可应用于分布式系统,分布式系统中包括主节点和至少两个从节点,主节点和至少两个从节点可以是具有处理能力的电子设备,以应用于分布式系统中的主节点为例,该方法具体包括:主节点确定当前时间为第一配置信息中的第一任务的执行时间,第一配置信息包括多个任务的信息,一个任务关联多个执行时间。主节点确定该第一任务所属的调度分组,其中,不同调度分组包括不同的从节点,不同的调度分组所关联的任务不同。主节点将第一任务分配至第一任务所属的调度分组所包括的第一从节点。通过该方法可以提高任务执行的效率。
Description
技术领域
本发明涉及任务调度技术领域,尤其涉及一种任务调度方法、装置及存储介质。
背景技术
为了提高任务的执行效率,通常会并行执行多个任务。当需要并行执行多个任务时,通常基于一定的规则对多个任务进行调度,使得多个任务按照一定顺序执行。
目前调度多个任务执行的方式有多种,例如可以使用Linux操作系统内置的crontab调度工具分别设置多个任务的执行时间,使多个任务按照设定的时间执行。又例如,也可以使用开源调度框架spring task或quartz等调度工具按照一定顺序来执行任务。但如果在一定时间段内需要执行的任务数量较多时,按照一定的执行时间或者执行顺序来调度多个任务会导致单一设备负载较高,影响任务的执行效率。
发明内容
本申请提供了一种任务调度方法、装置及存储介质,用于解决任务调度时单一设备负载较高,影响任务执行效率的问题。
第一方面,本申请提供了一种任务调度方法。该方法可应用于分布式系统,分布式系统中包括主节点和至少两个从节点,主节点和至少两个从节点可以是具有处理能力的电子设备,以应用于分布式系统中的主节点为例,该方法具体包括:主节点确定当前时间为第一配置信息中的第一任务的执行时间,确定该第一任务所属的调度分组,并将第一任务分配至第一任务所属的调度分组所包括的第一从节点。第一配置信息包括多个任务的信息,一个任务关联多个执行时间。不同的调度分组包括不同的从节点,不同的调度分组所关联的任务不同。
在本申请实施例中,分布式系统中包括主节点和至少两个从节点。系统可执行的任务包括第一配置信息中的多个任务,当主节点判断当前执行多个任务中的第一任务时,可以对第一任务进行调度。至少两个从节点可以事先进行调度分组,不同分组执行不同任务。主节点根据至少两个从节点的分组对第一任务进行分组调度。因此,对分布式系统中的从节点进行分组后,若当前有较多任务需要执行,可以将较多任务调度到不同分组中执行,使得各个从节点能够有序执行任务,各个从节点的负载更加均衡,提升了执行任务的效率。
可选的,在主节点确定该第一任务所属的调度分组之前,该方法还包括:主节点根据第二配置信息确定多个调度分组,第二配置信息包括至少两个从节点的信息。主节点根据多个调度分组及第一配置信息确定多个任务分别所属的调度分组。
在本申请实施例中,在确定第一任务所属的调度分组之前,可以事先根据需求划分至少两个从节点的分组,并将分组后的信息存储于第二配置信息。主节点可以根据至少两个从节点的分组及第一配置信息中的多个任务的配置情况合理地将多个任务进行分配,即不同分组执行不同的任务,使得分布式系统的负载更加均衡。
可选的,主节点将第一任务分配至第一任务所属的调度分组所包括的第一从节点,包括:主节点获取第一任务所属的调度分组中各个从节点的状态信息,各个从节点的状态信息包括资源占用情况。主节点根据各个从节点的状态信息确定各个从节点在调度时所占的权重。主节点根据各个从节点所占的权重确定将第一任务分配至第一从节点。
在本申请实施例中,主节点在将第一任务分配到调度分组中的某一个从节点时,根据各个从节点的状态信息对第一任务进行分配,可以使得该分组中各个从节点的负载更加均衡,保证了执行任务的效率。
可选的,主节点获取第一任务所属的调度分组中各个从节点的状态信息,包括:主节点通过分布式应用程序协调服务zookeeper获取各个从节点的心跳信号,心跳信号中包括资源占用情况。
可选的,当各个从节点的状态信息指示第一任务所属的调度分组中各个从节点不可用时,该方法还包括:主节点发送第一指示信息,第一指示信息用于指示第一任务所属的调度分组通过zookeeper创建临时从节点。
可选的,该方法还包括:主节点根据第三配置信息确定当前时间执行的事件,第三配置信息包括多个事件。主节点发送第二指示信息,第二指示信息用于指示至少两个从节点处理该事件。
第二方面,本申请提供了一种任务调度方法。以应用于分布式系统中的至少两个从节点为例,该方法具体包括:第一从节点通过zookeeper创建节点,向主节点发送心跳信号,心跳信号中包括第一从节点的资源占用情况。第一从节点接收并执行主节点分配的第一任务。
可选的,该方法还包括:第一从节点接收第二指示信息,该第二指示信息用于指示第一从节点处理事件。第一从节点根据该第二指示信息对该事件进行处理。
第三方面,本申请提供了一种任务调度装置。该装置包括确定模块及调度模块。其中,确定模块用于确定当前时间为第一配置信息中的第一任务的执行时间,第一配置信息包括多个任务的信息,一个任务关联多个执行时间。该确定模块还用于确定该第一任务所属的调度分组,其中,不同的调度分组包括不同的从节点,不同的调度分组关联的任务不同。调度模块用于将第一任务分配至第一任务所属的调度分组所包括的第一从节点。
可选的,确定模块还用于:根据第二配置信息确定多个调度分组,第二配置信息包括至少两个从节点的信息;根据多个调度分组及第一配置信息确定多个任务分别所属的调度分组。
可选的,调度模块具体用于:获取第一任务所属的调度分组中各个从节点的状态信息,其中,一个从节点的状态信息包括该从节点的资源占用情况;根据各个从节点的状态信息确定各个从节点在调度时所占的权重;根据各个从节点所占的权重确定将第一任务分配至第一从节点。
可选的,调度模块具体用于:通过分布式应用程序协调服务zookeeper获取各个从节点的心跳信号,心跳信号中包括资源占用情况。
可选的,调度模块还用于:发送第一指示信息,第一指示信息用于指示第一任务所属的调度分组通过zookeeper创建临时从节点。
可选的,调度模块还用于:根据第三配置信息确定当前时间执行的事件,发送第二指示信息。其中,第三配置信息包括多个事件,第二指示信息用于指示至少两个从节点处理该事件。
第四方面,本申请提供了一种任务调度装置。该装置包括:注册模块、发送模块和接收模块。其中,注册模块用于通过zookeeper创建节点。发送模块用于发送心跳信号,心跳信号中包括任务调度装置的资源占用情况。接收模块用于接收并执行主节点分配的第一任务。
可选的,接收模块还用于:接收第二指示信息,第二指示信息用于指示任务调度装置处理事件。根据该第二指示信息对该事件进行处理。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括处理器以及与处理器通信连接的存储器。其中,存储器存储有计算机执行指令,该指令被处理器执行,以使处理器能够执行上述第一方面或第二方面中任一项所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机执行指令,当该计算机执行指令被处理器执行时,使得处理器执行上述第一方面或第二方面中任一项所述的方法。
第七方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,处理器可以从计算机可读存储介质读取计算机程序,处理器执行计算机程序时可实现上述第一方面或第二方面中任一项所述的方法。
附图说明
图1为本申请实施例提供的任务调度方法应用的系统架构图示意图;
图2为本申请实施例提供的任务调度方法的流程示意图;
图3为本申请实施例提供的执行机器的功能模块的结构示意图;
图4为本申请实施例提供的主节点进行调度管理的流程示意图;
图5为本申请实施例提供的主节点进行任务分配的流程示意图;
图6为本申请实施例提供的主节点进行事件管理的流程示意图;
图7为本申请实施例提供的任务调度装置的一种结构示意图;
图8为本申请实施例提供的任务调度装置的另一种结构示意图;
图9为本申请实施例提供的电子设备的结构示意图。
具体实施方式
本申请实施例涉及一种任务调度方法,为了便于理解该任务调度方法,首先介绍与该方法相关的一些技术术语。
1、分布式系统,是指由多个网络节点组成的系统。例如,分布式系统可以包括一个主节点和多个从节点,通常主节点和从节点拥有不同的权限。
2、应用程序协调服务zookeeper,主要用来解决分布式系统中应用系统的一致性问题。zookeeper服务提供基于类似于文件系统的,zookeeper维护一个类似文件系统的数据结构,每个子目录项都被称为子节点,和文件系统类似,能够自由的增加、删除子节点。也就是说,通过zookeeper可以创建任意创建或删除分布式系统中的节点。zookeeper服务以目录节点树方式的数据存储服务,可以维护数据和监控数据的状态变化。通过zookeeper服务建立的分布式系统,系统中的主节点可以通过zookeeper服务实时监控各个从节点的数据状态的变化,从而可以根据各个从节点的数据进行管理。
如前述的,当需要在短时间内执行多个任务时,现有任务调度方式包括使用Linux操作系统内置的crontab调度工具设置多个任务的执行时间,使多个任务按照设定的时间执行。但是crontab需要绑定Linux操作系统的执行机器,如果在一定时间段内需要执行的任务数量较多时,容易导致单一设备负载较高,影响任务的执行效率。或者,也可以使用开源调度框架spring task或quartz等调度工具按照一定顺序来执行任务。但是spring task默认使用单线程执行任务,quartz引入数据库(database,DB)独占锁来唯一获取任务。如果在一定时间段内需要执行的任务数量较多时,也容易导致单一设备负载较高,影响任务的执行效率。
为此,本申请实施例提供了一种任务调度方法。在该方法中,通过建立包括多个节点的分布式系统,在进行任务调度时可以对多个节点进行调度分组,根据分组对任务进行调度,使得各个从节点能够有序执行任务。这样有较多任务需要执行时,可以通过调整分组,使得任务在负载较低的节点上执行,从而尽量避免单一节点负载较高的情况出现。
请参见图1,示出了本申请实施例提供的任务调度方法应用的系统架构图。该系统中包括多个设备,即多个执行机器(执行机器1、执行机器2…执行机器N),多个执行机器在执行任务时,可以从数据库中获取与任务相关联的数据。初始时多个执行机器具有相同权限。多个执行机器之间通过zookeeper服务建立一个分布式系统。多个执行机器分别通过zookeeper服务进行注册成为分布式系统中的一个节点。然后多个执行机器组成的节点通过节点选举确定分布式系统中的主节点。多个执行机器发起选举投票,当多个执行机器中某一个执行机器得票数超过执行机器数量的一半时,可以确定该执行机器为分布式系统中的主节点,则其他执行机器作为分布式系统中的从节点。即分布式系统中包括主节点和至少两个从节点。
主节点和从节点的权限不同,在进行任务调度时由主节点承担任务调度工作,将任务动态分配至各个从节点,各个从节点利用自身的物理和逻辑资源执行主节点分配的任务。主节点可以通过zookeeper服务感知各个从节点的状态,并作为调度中心进行任务的分配。从节点接收并执行主节点分配的任务。另外,分布式系统中的主节点出现宕机或者不可用时,从节点还可以重新进行选举从从节点中选出一个主节点。
请参见图2,示出了基于图1所示系统架构的任务调度方法流程图。该方法可应用于具有处理能力的电子设备,电子设备包括除图1所示的终端设备外,还可以是平板电脑(PAD)、个人计算机(PC)等。当然,本发明实施例中的电子设备的类型不限于此。下文中以电子设备为分布式系统中的主节点为例进行说明。
S201、主节点确定当前时间为第一配置信息中的第一任务的执行时间,第一配置信息包括多个任务的信息,一个任务关联多个执行时间。
第一配置信息包括多个任务相关联的配置信息。例如,第一配置信息包括多个任务的执行时间以及执行的频率,一个任务可能会需要执行多次,因此一个任务可关联多个执行时间。不同任务的执行时间及执行的频率可能不同。第一配置信息可存储于数据库。第一配置信息可以以数据库表的形式进行存储。例如,第一配置信息可以包括单独一个配置表,其中包括每个任务的执行时间及频率。或者,第一配置信息可以由多个配置表组成,例如,第一配置信息可以包括调度任务配置表AS_TASK_CFG、调度定时配置表AS_TIMMER_CFG、调度日历表AS_CALENDAR。其中,调度任务配置表AS_TASK_CFG用于存储调度任务相关的信息,例如,描述执行任务需要的时间、需要占用的资源数量等。调度定时配置表AS_TIMMER_CFG关联调度任务配置表,用于配置调度任务的时间及频率,调度日历表AS_CALENDAR用于配置调度任务的执行日期。当然,第一配置信息可以通过其他形式进行存储,这里不再赘述。另外,可以对第一配置信息进行灵活设置,以根据用户需求对多个任务的执行时间及频率进行修改。
通过zookeeper服务建立的分布式系统中的主节点作为调度中心进行任务的分配,当系统中存在多个可执行的任务时,将任务调度到各个从节点,相应地,各个从节点执行主节点分配的任务。由于多个可执行任务可能需要在不同时间段执行,即当前时间只需执行多个任务中的一部分任务,主节点通过查询第一配置信息以确定当前时间需要执行的任务。
S202、主节点确定第一任务所属的调度分组,不同的调度分组包括不同的从节点,不同调度分组所关联的任务不同。
由于第一配置信息中包括的任务数量可能较多,主节点在当前时间进行任务调度时,当前需要执行的任务数量也可能较多。也就是说,除了确定当前时间到达多个中的一个任务(可以称为第一任务)的执行时间外,还可能确定存在其他任务需要执行(例如,第二任务),即系统处于多任务高并发执行的情况。由于每个任务在执行时需要占用的资源可能不同,有的任务占用的资源较少,有的任务则可能占用较多资源,因此需要对多个任务进行合理调度以提高任务执行的效率。
在本申请实施例中,在将当前可执行的多个任务调度到分布式系统中的各个从节点时,可以对分布式系统的至少两个从节点中的各个从节点进行分组,分成包括不同从节点的调度分组,从而对多个任务进行分组调度,以使多个任务分配到不同分组。
各个从节点的分组可以根据调度的需求事先设定。本申请实施例对多个从节点的分组方式不作限制。例如,可以将多个性能较优的执行机器对应的从节点分为一个调度分组,这样可以将数量较多、占用资源较多的任务分配至该组,可以提高任务执行的效率。又例如,也可以将多个性能较优的从节点分开,分别与性能较差的从节点组成一个调度分组,这样,一个调度分组中包括性能较优和性能较差的从节点,可以使各个调度分组的负载更加均衡。
分布式系统中的至少两个从节点的分组信息可以存储于各个从节点的配置信息。为方便描述,将包括各个从节点分组信息的配置信息称为第二配置信息。主节点在对第一任务进行调度时,可以获取第二配置信息,然后根据第二配置信息确定多个调度分组。第二配置信息可以以列表的形式进行存储。例如,可以将第二配置信息存储于调度环境配置表AS_HOST_GROUP_CFG中,通过调度环境配置表AS_HOST_GROUP_CFG可以对不同服务器进行分组调度,也可以对调度资源限制进行控制。另外,当需要对各个从节点重新分组时,也可以根据分组需求对第二配置信息进行修改。
第一配置信息中的多个任务可以与不同分组绑定,这样,在多个任务同时执行时,可以对不同任务进行分组调度,提高多个任务高并发执行的效率。例如,主节点根据第二配置信息确定的调度分组及第一配置信息中的多个任务确定多个任务分别所属的调度分组。举例来说,可以根据第一配置信息中每个任务在执行时需要占用的资源为每个任务绑定相应的调度分组。例如,对于占用资源较多的任务将其绑定至性能较优的调度分组,这样可以提升该任务的执行效率,也不至于该分组负载较高。又例如,可以将占用资源较少的较多个任务绑定至性能较优的调度分组,这样该调度分组可以较快处理多个任务。当然,确定第一配置信息中多个任务分别所属的调度分组的方式有多种,这里不再一一列举。
S203、主节点将第一任务分配至第一任务所属的调度分组的第一从节点。
由于一个调度分组中包括多个从节点,主节点需要确定将第一任务分配至该分组中的某一个从节点。例如,主节点在确定当前执行的第一任务所属的调度分组后,对第一任务进行分组调度,将第一任务分配至第一调度分组中的第一从节点,指示第一从节点执行第一任务。当然,这里仅以第一从节点为例进行说明,对于分布式系统中的其他从节点(例如第二从节点)执行任务的情况与第一从节点类似,这里不再赘述。
本申请实施例对第一从节点的选择方式不作限制,例如,第一从节点可以是资源占用较少的节点。具体的,分布式系统所包括的各个节点可以设置一个心跳程序,用于报告对应节点的状态信息。其中,节点的状态信息包括节点的资源占用情况,包括IP地址、CPU及内存的参数、CPU及内存的占用情况、节点当前执行任务的数据等。分布式系统中的各个从节点可以通过zookeeper服务向主节点发送心跳信号,主节点可以根据各个从节点的心跳信号确定各个从节点的资源占用情况,并根据各个从节点的资源占用情况进行任务调度、从节点的管理。相应地,各个从节点也可以通过主节点的心跳信号确定主节点的状态。
主节点获取各个从节点的心跳信号,可以根据各个从节点心跳信号中包括的各个从节点的状态信息对第一任务进行调度。例如,主节点根据各个从节点的心跳信号确定该调度分组中存在的可用从节点,主节点可以将第一任务分配至第一任务所属的调度分组中的某一个可用从节点。主节点可以根据各个从节点的状态信息确定各个从节点在调度时所占的权重确定该可用从节点。例如,主节点根据状态信息确定各个从节点中资源占用越少的可用从节点的权重越高,这样使第一任务能够尽可能分配至资源占用越少的从节点,可以使整个调度分组的负载均衡。又例如,主节点根据状态信息确定各个从节点中物理性能越好的可用从节点的权重越高,这样当第一任务执行需要较多物理资源时,分配至的从节点能够顺利执行任务,可以提高分布式系统的可用性。
需要说明的是,主节点确定各个从节点的权重的方式可以有多种,可以根据各个从节点的CPU及内存的资源占用情况直接确定各个从节点的权重,其中CPU及内存资源占用越少的从节点的权重越高。也可以根据各个从节点的IP地址、CPU及内存的参数、CPU及内存的占用情况、节点当前执行任务的数据综合设置,具体可以根据应用场景的需求确定。
主节点根据各个从节点的权重进行第一任务的分配。可以根据各个从节点的权重对各个从节点进行排序,例如,将各个从节点的权重从高到低依次排序为“1”、“2”、“3”……。然后根据权重的排序通过轮询的方式确定将第一任务分配给排序为“1”的从节点。另外,若主节点根据各个从节点的心跳信号确定该调度分组中各个从节点不可用,即第一任务所属的调度分组中可能不存在可用的物理资源时,可以指示该调度分组新增临时从节点,通过临时从节点执行第一任务。例如,主节点可以通过发送第一指示信息,指示该调度分组创建临时从节点。相应地,各个从节点接收第一指示信息,分布式系统中的某一空闲节点接收到第一指示信息,通过zookeeper服务注册成为该调度分组中的临时从节点,承担第一任务的执行工作。
主节点通过加权轮询的方式确定将第一任务分配至第一从节点后,第一从节点从系统数据库中获取第一任务并执行该任务,并将该任务的状态置为“running”,表示该任务正在执行。第一从节点还可以持续跟进第一任务的执行情况,并根据第一任务的执行情况更新第一任务的状态,例如,若第一任务执行过程中出现暂停,则将第一任务的状态置为“idle”。第一从节点对第一任务的执行状态进行持续监控,直至第一任务执行完成。
在本申请实施例中,分布式系统中的主节点还可以对事件进行管理。事件包括定时事件及非定时事件、系统事件及非系统事件。定时事件和系统事件定时生效,则这两类事件关联多个执行时间,当到达事件的执行时间时,执行相应的事件。非定时事件和非系统事件包括取消、暂停、重跑和放开等类型的事件,这两类事件为即时生效。在对事件进行处理时,可以将事件及其相关信息存储于第三配置信息中,通过第三配置信息对事件进行管理。当第三配置信息中存在该类事件时,需要立即执行该事件。同样地,第三配置信息可以以列表的形式进行存储。例如,第三配置信息包括调度事件配置表AS_EVENT_CFG、调度事件实例表AS_EVENT_INSTANCE。其中,调度事件配置表AS_EVENT_CFG用于存储调度事件相关信息。在该表中可以对调度事件的进行详细描述,描述内容包括取消、暂停、重跑、放开、定时、系统等事件类型。调度事件实例表AS_EVENT_INSTANCE用于存储调度事件实例,当满足调度条件时,将待处理事件放入该表中,等待处理。
分布式系统中的主节点负责事件的处理。当通过第三配置信息确定存在需要处理的事件时,主节点发送第二指示信息,指示各个从节点处理该事件。
请参见图3,基于同一发明构思,对分布式系统中的执行机器进行功能划分。可以将每个执行机器划分为心跳程序模块、调度管理模块、任务分配模块及事件管理模块。其中,心跳程序模块中设置心跳程序,用于共享该节点的状态信息,调度管理模块用于对任务的状态进行跟踪,任务分配模块用于将多个任务分配至不同的节点,事件管理模块用于对时间进行处理。初始时各个执行机器具有相同的功能,在经过节点选举确定主节点后,主节点承担任务调度及事件管理的功能,其他执行机器作为分布式系统中的从节点。如图4,示出了主节点进行调度管理的流程。主节点的调度管理模块会定时扫描任务实例表,将满足执行时间的任务从表中取出,并进行任务注册。任务注册是通过将任务添加到Zookeeper中来实现。在任务执行过程中,主节点的调度管理模块会持续跟踪任务的执行状态,并对状态进行更新,当任务执行完成后,还会对任务的业务日期进行切换。
如图5,示出了主节点进行任务分配的流程。主节点的任务分配模块负责将注册后的任务,按照一定的负载均衡策略,如加权轮询算法,分配到分布式系统中不同的从节点中执行。具体的,主节点的任务分配模块一直监听Zookeeper中的/Task/new节点,即任务注册的节点。当发现有新任务注册时,任务分配模块会按照所有从节点当前报告的资源状态,计算出最适合分配任务的从节点,并将任务分配到/Servers对应的从节点下。每个从节点的心跳程序模块也在同步监听自己的/Servers节点,当发现有新的任务添加到自己的节点下后,便会去执行该任务,并持续更新任务状态。如图6,示出了主节点进行事件管理的流程。主节点的事件管理模块负责对人工干预或者系统自动事件进行处理,它会定时查询事件配置表,将满足调度条件的事件实例化后登记事件实例表中,等待事件实际的生效。
请参见图7,基于同一发明构思,本申请实施例提供了一种任务调度装置700。该装置700包括:确定模块701及调度模块702。其中,确定模块701用于确定当前时间为第一配置信息中的第一任务的执行时间,第一配置信息中包括多个任务,一个任务关联多个执行时间。该确定模块701还用于确定该第一任务所属的调度分组,其中,不同调度分组包括不同从节点,不同调度分组用于处理不同任务。调度模块702用于将第一任务分配至第一任务所属的调度分组的第一从节点。
可选的,确定模块701还用于:根据第二配置信息确定多个调度分组,第二配置信息包括至少两个从节点的配置信息。根据多个调度分组及第一配置信息确定多个任务分别所属的调度分组。
可选的,调度模块702具体用于:获取调度分组中各个从节点的状态信息,各个从节点的状态信息包括各个从节点的资源占用情况。根据各个从节点的状态信息确定各个从节点在调度时所占的权重。根据各个从节点所占的权重确定将第一任务分配至第一从节点。
可选的,调度模块702具体用于:通过分布式应用程序协调服务zookeeper获取各个从节点的心跳信号,心跳信号中包括各个从节点的资源占用情况。
可选的,调度模块还用于:发送第一指示信息,第一指示信息用于指示调度分组通过zookeeper创建临时从节点。
可选的,调度模块702还用于:根据第三配置信息确定当前时间执行的事件,第三配置信息中包括多个事件。发送第二指示信息,第二指示信息用于指示至少两个从节点处理该事件。
请参见图8,基于同一发明构思,本申请实施例还提供了一种任务调度装置800。该装置800包括:注册模块801、发送模块802和接收模块803。其中,注册模块801用于通过zookeeper创建节点。发送模块802用于发送心跳信号,心跳信号中包括至少两个从节点的资源占用情况。接收模块803用于接收并执行第一任务。
可选的,接收模块803还用于:接收第二指示信息,第二指示信息用于指示至少两个从节点处理事件。根据该第二指示信息对该事件进行处理。
请参见图9,基于同一发明构思,本申请实施例提供了一种电子设备900,该电子设备包括:至少一个处理器901、至少一个存储器902以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如前述的任务调度方法。
可选的,处理器901具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(英文:Field Programmable GateArray,简称:FPGA)开发的硬件电路,可以是基带处理器。
可选的,该读写锁操作设备还包括与至少一个处理器901连接的存储器902,存储器902可以包括只读存储器(英文:Read Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)和磁盘存储器。存储器902用于存储处理器901运行时所需的数据。存储器902的数量为一个或多个。其中,存储器902在图9中一并示出,但需要知道的是存储器902不是必选的功能模块,因此在图9中以虚线示出。
基于同一发明构思,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的任务调度方法。
在具体的实施过程中,计算机可读存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash drive,USB)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的存储介质。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash disk)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种任务调度方法,其特征在于,应用于分布式系统,所述分布式系统中包括主节点和至少两个从节点,所述方法包括:
所述主节点确定当前时间为第一配置信息中的第一任务的执行时间,所述第一配置信息包括多个任务的信息,一个任务关联多个执行时间,所述多个任务包括所述第一任务和第二任务;
所述主节点确定所述第一任务所属的调度分组,不同的调度分组包括不同的从节点,不同的调度分组所关联的任务不同;
所述主节点将所述第一任务分配至所述第一任务所属的调度分组所包括的第一从节点。
2.如权利要求1所述的方法,其特征在于,在所述主节点确定所述第一任务所属的调度分组之前,所述方法还包括:
所述主节点根据第二配置信息确定多个调度分组,所述第二配置信息包括所述至少两个从节点的信息;
所述主节点根据所述多个调度分组及所述第一配置信息确定所述多个任务分别所属的调度分组。
3.如权利要求2所述的方法,其特征在于,所述主节点将所述第一任务分配至所述第一任务所属的调度分组所包括的第一从节点,包括:
所述主节点获取所述第一任务所属的调度分组中各个从节点的状态信息,其中,一个从节点的状态信息包括所述一个从节点的资源占用情况;
所述主节点根据所述各个从节点的状态信息确定所述各个从节点在调度时所占的权重;
所述主节点根据所述各个从节点所占的权重确定将所述第一任务分配至所述第一从节点。
4.如权利要求3所述的方法,其特征在于,所述主节点获取所述第一任务所属的调度分组中各个从节点的状态信息,包括:
所述主节点通过分布式应用程序协调服务zookeeper获取所述各个从节点的心跳信号,所述心跳信号中包括资源占用情况。
5.如权利要求3所述的方法,其特征在于,当所述各个从节点的状态信息指示所述第一任务所属的调度分组中各个从节点不可用时,所述方法还包括:
所述主节点发送第一指示信息,所述的第一指示信息用于指示所述第一任务所属的调度分组通过zookeeper创建临时从节点。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述主节点根据第三配置信息确定当前时间执行的事件,所述第三配置信息中包括多个事件;
所述主节点发送第二指示信息,所述第二指示信息用于指示所述至少两个从节点处理所述事件。
7.一种任务调度方法,其特征在于,应用于分布式系统,所述分布式系统中包括主节点和至少两个从节点,所述方法包括:
第一从节点通过zookeeper创建节点,所述第一从节点属于至少两个从节点,所述至少两个从节点还包括第二从节点;
所述第一从节点向所述主节点发送心跳信号,所述心跳信号中包括所述第一从节点的资源占用情况;
所述第一从节点接收并执行所述主节点分配的第一任务。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
所述第一从节点接收第二指示信息,所述第二指示信息用于指示所述第一从节点处理事件;
所述第一从节点根据所述第二指示信息对所述事件进行处理。
9.一种任务调度装置,其特征在于,包括:
确定模块,用于确定当前时间为第一配置信息中的第一任务的执行时间,所述第一配置信息包括多个任务的信息,一个任务关联多个执行时间;
所述确定模块,还用于确定所述第一任务所属的调度分组,不同的调度分组包括不同的从节点,不同的调度分组所关联的任务不同;
调度模块,用于将所述第一任务分配至所述第一任务所属的调度分组所包括的第一从节点。
10.一种任务调度装置,其特征在于,包括:
注册模块,用于通过zookeeper创建节点;
发送模块,用于发送心跳信号,所述心跳信号中包括所述任务调度装置的资源占用情况;
接收模块,接收并执行主节点分配的第一任务。
11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-6或7-8中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6或7-8中任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-6或7-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310252701.3A CN116225655A (zh) | 2023-03-07 | 2023-03-07 | 一种任务调度方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310252701.3A CN116225655A (zh) | 2023-03-07 | 2023-03-07 | 一种任务调度方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225655A true CN116225655A (zh) | 2023-06-06 |
Family
ID=86580456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310252701.3A Pending CN116225655A (zh) | 2023-03-07 | 2023-03-07 | 一种任务调度方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225655A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541871A (zh) * | 2023-07-06 | 2023-08-04 | 北京鼎轩科技有限责任公司 | 一种数据处理方法、分布式系统、计算机设备及存储介质 |
CN117155930A (zh) * | 2023-11-01 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 分布式系统的节点确定方法、任务处理方法及相关装置 |
-
2023
- 2023-03-07 CN CN202310252701.3A patent/CN116225655A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541871A (zh) * | 2023-07-06 | 2023-08-04 | 北京鼎轩科技有限责任公司 | 一种数据处理方法、分布式系统、计算机设备及存储介质 |
CN116541871B (zh) * | 2023-07-06 | 2023-08-29 | 北京鼎轩科技有限责任公司 | 一种数据处理方法、分布式系统、计算机设备及存储介质 |
CN117155930A (zh) * | 2023-11-01 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 分布式系统的节点确定方法、任务处理方法及相关装置 |
CN117155930B (zh) * | 2023-11-01 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 分布式系统的节点确定方法、任务处理方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116225655A (zh) | 一种任务调度方法、装置及存储介质 | |
US7523178B2 (en) | Tolerating failure of traffic management systems | |
RU2293444C2 (ru) | Способ диспетчеризации опроса устройств для считывания данных | |
CN106663030B (zh) | 在分布式集群中的可扩展故障恢复通信 | |
CN100428167C (zh) | 计算机系统、服务器以及作业执行控制方法 | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
CN103366022B (zh) | 信息处理系统及其处理方法 | |
JP6083290B2 (ja) | 分散処理システム | |
CN110221920B (zh) | 部署方法、装置、存储介质及系统 | |
CN111459641B (zh) | 一种跨机房的任务调度和任务处理的方法及装置 | |
CN112437129B (zh) | 集群的管理方法及集群的管理装置 | |
CN109992373B (zh) | 资源调度方法、信息管理方法和装置及任务部署系统 | |
CN112631805A (zh) | 数据处理方法、装置、终端设备及存储介质 | |
CN110083536B (zh) | 测试资源分配方法及装置、电子设备及存储介质 | |
CN113760549B (zh) | 一种pod部署方法及装置 | |
CN110795202B (zh) | 一种虚拟化集群资源管理系统的资源分配方法以及装置 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN114020408A (zh) | 一种任务分片配置方法及装置、设备、存储介质 | |
CN110209475B (zh) | 数据采集方法及装置 | |
WO2022042724A1 (zh) | 容器创建方法、装置、电子设备及存储介质 | |
CN109614229A (zh) | 一种基于软件定义的虚拟网络资源分配系统 | |
WO2017018978A1 (en) | Scheduling jobs in a computing cluster | |
CN111008124B (zh) | 数据库测试的任务调度方法以及装置 | |
CN111309397B (zh) | 数据分配方法、装置、服务器及存储介质 | |
CN114969149B (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 |