CN104915258B - 分布式任务调度的方法和装置 - Google Patents

分布式任务调度的方法和装置 Download PDF

Info

Publication number
CN104915258B
CN104915258B CN201510312490.3A CN201510312490A CN104915258B CN 104915258 B CN104915258 B CN 104915258B CN 201510312490 A CN201510312490 A CN 201510312490A CN 104915258 B CN104915258 B CN 104915258B
Authority
CN
China
Prior art keywords
task
thread
executed
pool
thread pool
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
Application number
CN201510312490.3A
Other languages
English (en)
Other versions
CN104915258A (zh
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 Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201510312490.3A priority Critical patent/CN104915258B/zh
Publication of CN104915258A publication Critical patent/CN104915258A/zh
Application granted granted Critical
Publication of CN104915258B publication Critical patent/CN104915258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种分布式任务调度的方法和装置。所述方法包括:由分布式任务调度装置接收任务执行请求;由所述装置的控制器模块确定线程池是否繁忙;如果所述线程池空闲,则由所述控制器模块处理接收到的任务执行请求并对所述线程池生成任务线程;由所述线程池执行所生成的任务线程;以及在所述任务完成之后,由所述装置的参数设置模块确定由所述线程池生成的执行线程是否继续执行。

Description

分布式任务调度的方法和装置
技术领域
本发明涉及定时任务技术,特别是涉及分布式任务调度的方法和装置。
背景技术
近年来,随着互联网的发展,数据量大,并发数高等特点突出,对系统服务要求越来越高;从系统的角度,请求数据尽量先预处理并生成异步任务,并快速返回结果,提高系统响应时间及吞吐量,系统再在预处理结果上对异步任务进行处理,最终完成用户请求;但这会带来任务控制、分步式调度与高效等问题。
现有方法主要是由几个步骤完成:(1)系统每隔预定时间触发执行任务操作请求;(2)系统根据请求执行总任务数、执行线程数、单次取任务数计算出单个线程执行的任务数以及需要执行循环数;(3)系统在单次循环中,根据执行线程数,多次从任务资源池获取任务,分配给指定的线程池执行,线程池内线程执行中相互制约;(4)只有当第(3)步分配的所有任务执行完成后,循环次数加一;如果计算循环次数大于或等于第(2)步计算需要执行循环数,则退出请求;否则循环执行第(3)步。
然而,现有技术主要有以下几个缺点:(1)操作参数无法修改,只有使用默认值;(2)执行子线程需要相互等待制约,降低任务执行效率;(3)线程可能独占过多任务,并串行执行,而其它线程无法执行,导致任务执行效率低下;(4)任务积压无报警机制。
因此,需要一种能够提高任务执行的效率,并达到可以控制任务执行并发执行数以便更好的执行任务的分布式任务调度的方法和装置。
发明内容
根据本发明的一个实施例,提供了一种分布式任务调度的方法,包括:由分布式任务调度装置接收任务执行请求;由所述装置的控制器模块确定线程池是否繁忙;如果所述线程池空闲,则由所述控制器模块处理接收到的任务执行请求并对所述线程池生成任务线程;由所述线程池执行所生成的任务线程;以及在所述任务完成之后,由所述装置的参数设置模块确定由所述线程池生成的执行线程是否继续执行。
优选地,在确定所述线程池是否繁忙之前,由所述控制器模块确定是否校验调度。
优选地,由所述线程池执行所请求的任务进一步包括:由所述参数设置模块计算已执行的总任务数;以及由所述参数设置模块将已执行的总任务数与请求的总任务数进行比较,以便确定所述任务是否已经执行完成。
优选地,如果确定没有完成所述任务,则由所述控制器模块从任务池取出参数信息预设定的任务数;以及由所述线程池执行所取出的任务,直到所有任务都已经执行完成。
优选地,如果确定所述线程池所生成的执行线程继续执行,则由所述控制器模块获取任务池中待执行的任务数;由所述控制器模块确定所获取的待执行的任务数是否达到报警临界值;以及如果已经达到所述报警临界值,则由报警通知模块执行任务积压报警。
根据本发明的另一个实施例,提供了一种分布式任务调度的装置,包括:控制器模块,所述控制器模块被配置成,当所述装置接收到任务执行请求时,确定线程池是否繁忙,并且在所述线程池空闲的情况下,处理接收到的任务执行请求并对所述线程池生成任务线程;线程池,所述线程池被配置成执行所生成的任务线程;以及参数设置模块,所述参数设置模块被配置成,在任务完成之后,确定由所述线程池生成的执行线程是否继续执行。
优选地,所述控制器进一步被配置成:在确定所述线程池是否繁忙之前,确定是否校验调度。
优选地,所述参数设置模块进一步被配置成:计算已执行的总任务数;以及将已执行的总任务数与请求的总任务数进行比较,以便确定所述任务是否已经执行完成。
优选地,所述控制器进一步被配置成:如果确定没有完成所述任务,则从任务池取出参数信息预设定的任务数。
优选地,所述线程池进一步被配置成:执行所取出的任务,直到所有任务都已经执行完成。
优选地,所述控制器进一步被配置成:如果确定所述线程池所生成的执行线程继续执行,则获取任务池中待执行的任务数;以及确定所获取的待执行的任务数是否达到报警临界值;
优选地,所述装置进一步包括:报警通知模块,所述报警通知模块被配置成,如果已经达到所述报警临界值,则执行任务积压报警。
有益效果
根据本发明的技术方案实现了可配置、修改各参数,以此控制任务的并发执行数量,达到快速处理目标任务。而且,参数信息可回退至初始状态,一般初始参数是能够保证系统任务正常运行,只有待执行任务量,系统才需要调整参数,提高并发执行数量。本发明在系统响应请求前检验线程池处理能力,使得避免了单一应用过于繁忙;系统执行任务时,避免执行线程相互等待、相互影响。而且,本发明的技术方案还采取了轮询检测任务池积压数量,以便达到警戒水位进行触发报警的机制。
根据本发明的技术方案,通过控制装置内不积压、抢占任务,系统内所有装置线程执行完成再申请获取任务执行,从而达到系统分布式调度任务。
根据本公开和附图的下面的详细描述,对本领域的普通技术人员来说其它的目的、特征、以及优点将是显而易见的。
附图说明
附图图示了本发明的实施例,并与说明书一起用于解释本发明的原理。在附图中:
图1图示了根据本发明实施例的分布式任务调度的装置的示意图。
图2图示了根据本发明实施例的分布式任务调度的方法的流程图。
具体实施方式
根据本发明的实施例公开了一种分布式任务调度的方法和装置。在以下描述中,为了说明的目的,阐述了多个具体细节以提供对本发明的实施例的全面理解。然而,对于本领域技术人员显而易见的是,本发明的实施例可以在没有这些具体细节的情况下实现。
图1图示了根据本发明实施例的分布式任务调度的装置100的示意图。如图1所示,装置100包括参数设置模块102、线程池104、控制器模块106和报警通知模块108。
参数设置模块102可在运行时修改装置内的线程池信息、控制器参数以及报警通知参数,以便于装置内其它组件使用。所述参数信息包括但不限于请求总任务数、执行线程数、单次取任务数、是否校验、装置繁忙标记、装置繁忙临界值、任务完成继续执行标记、以及线程池核心线程数、线程池最大工作线程数等。
线程池104是执行任务的具体资源池,控制着线程的运行状态、等待队列、最大执行线程数等。
控制器模块106具有以下控制功能:1、检测装置是否繁忙,线程池运行状态,决定是否可处理请求;2、检查任务池待执行任务数,校验是否达到警戒任务数,再确认是否触发报警通知;3、从任务池获取任务,分发给线程池执行,并控制着单一请求触发需要处理总任务数;4、通过控制自身装置运行状态,达到可影响分布在其它处的相同装置。
报警通知模块108用于当检测到达到装置100预设置的报警临界值时,进行任务积压报警。装置100支持邮件通知及手机短信通知的报警方式。本领域技术人员将理解,可以使用其他的报警方式。
当装置100被初始化时,返回一个任务调度。然后,参数设置模块102根据默认设置来初始化线程池大小、总任务数、执行线程数以及单次取任务数等。而且,在运行中,通过参数设置模块102可修改装置100的信息,从而控制装置100的内部工作流程。
图2图示了根据本发明实施例的分布式任务调度的方法200的流程图。如图2所示,在步骤202中,装置100接收到任务执行请求。在步骤204中,由控制器模块106确定是否需要校验调度。如果不需要校验调度,则该处理进行到步骤208;如果需要校验调度,则该处理进行到步骤206。在步骤206中,由控制器模块106确定线程池104是否繁忙。如果线程池104繁忙,则该任务执行请求结束。如果线程池104不繁忙,即,线程池104空闲,则该处理进行到步骤208。
在步骤208中,由控制器模块106处理所接收到的任务执行请求,并由参数设置模块102生成用于统计各个执行线程处理的总任务数信号。所生成的总任务数信号被用于将各个线程与请求执行的总任务数进行比较,以便判断任务是否已经执行完成。接着,在步骤210中由控制器模块106对线程池生成任务线程,并在步骤212和213中线程池104启动执行所生成的任务线程。步骤212和213是子线程执行,步骤212和213的执行线程不相互影响,各自执行。尽管图2中仅示意性图示了两个子线程执行212和213,但是本领域技术人员可以理解,可以有更多子线程执行。主线程等待所有子线程执行完成后,继续执行步骤214。
在步骤214中,子线程自行对步骤208中所生成的总任务数信号进行计算,并由参数设置模块102生成已经执行的总任务数。在步骤216中,由参数设置模块102将所生成的已经执行的总任务数与请求总任务数进行比较,以便确定任务是否已经执行完成。如果在步骤216中确定没有完成任务,则在步骤218中由控制器模块106从任务池取出参数信息预设定的任务数。在步骤220中,由线程池104执行任务。然后,在步骤222中,任务完成并返回循环执行步骤214,直到确定任务已经执行完成。
如果在步骤216中确定任务已经执行完成,则该步骤为分配总任务数完成,子线程执行结束,触发主线程继续执行。因此,在步骤224中由控制器模块106检查参数设置以便确定线程池104所生成的执行线程是否继续执行。如果不执行,则该处理结束。如果在步骤224中确定线程池104所生成的执行线程继续执行,则在步骤226中由控制器模块106获取任务池中待执行的任务数。然后,在步骤228中,由控制器模块106检查上一步骤的结果以确定是否达到装置预设置的报警临界值。如果未达到,则该处理结束。如果确定已经达到报警临界值,则在步骤230中由报警通知模块108执行任务积压报警,并且该处理继续返回至步骤208,使得快速消费执行完成任务信息,从而避免任务池数量积压过多。报警的方式包括但不限于发送短信、邮件等。
优选地,当装置100在任务池中数量不同时,采取不同的配置可以明显改善执行任务的响应时间。
例如,在任务池积压任务过多的情况下,可以采取“任务结束继续执行”的方案。当装置100执行完请求任务数后,会继续试着执行任务,使装置100的线程池使用最大线程数,其处理能力达到饱和,从而增大装置100的处理能力。
在任务池中待执行数量较少的情况下,可以采取“校验临界值”的方案,避免单个装置占用任务过多,并需要在装置内等待执行,而系统内其它空闲装置又无法获取任务,导致任务执行效率低下;可以控制协调系统内多个装置能均匀获取任务;为了更好的达到上述效果,单次取任务数量为1,这样每个任务可以直接执行,无须在装置对等待;系统从而达到分布式调度任务。
根据采用本发明的技术方案的电商的实际项目,执行响应时间从原来平均150秒提升到平均15秒;而且,缩短了用户在商品页查看到商品等待时间,改善了商家发布商品的体验。
本发明的技术方案在执行请求之前查检处理线程池是否繁忙,处理能力是否已饱和,从而避免执行线程相互制约、等待。而且,各执行线程自行申请任务,对执行任务数信号维护。在任务结束前,本发明的技术方案根据情况确认是否需要继续执行任务,从而最大化地利用线程池的处理能力,避免线程池空闲、任务有积压。
本发明通过单一装置自我控制、检验完成调度任务,从而达到分布式任务调度,避免了个别装置执行繁忙饱和,并且锁定任务,导致任务执行效率下降。
上述实施例仅是本发明的优选实施例,并不用于限制本发明。对本领域技术人员显而易见的是,在不脱离本发明精神和范围的情况下,可以对本发明的实施例进行各种修改和改变。因此,本发明意在涵盖落入如权利要求所限定的本发明的范围之内的所有的修改或变型。

Claims (12)

1.一种分布式任务调度的方法,包括:
由分布式任务调度装置接收任务执行请求;
由所述装置的控制器模块确定线程池是否繁忙;
如果所述线程池空闲,则由所述控制器模块处理接收到的任务执行请求并对所述线程池生成任务线程;
由所述线程池执行所生成的任务线程;以及
在所述任务完成之后,由所述装置的参数设置模块确定由所述线程池生成的执行线程是否继续执行;
其中,在确定所述线程池是否繁忙之前,还包括:由所述控制器模块确定是否校验调度;所述校验调度是指判断所述线程池是否繁忙。
2.根据权利要求1所述的方法,其中,由所述线程池执行所请求的任务进一步包括:
由所述参数设置模块计算已执行的总任务数;以及
由所述参数设置模块将已执行的总任务数与请求的总任务数进行比较,以便确定所述任务是否已经执行完成。
3.根据权利要求2所述的方法,进一步包括:
如果确定没有完成所述任务,则由所述控制器模块从任务池取出参数信息预设定的任务数;以及
由所述线程池执行所取出的任务,直到所有任务都已经执行完成。
4.根据权利要求1所述的方法,进一步包括:
如果确定所述线程池所生成的执行线程继续执行,则由所述控制器模块获取任务池中待执行的任务数;
由所述控制器模块确定所获取的待执行的任务数是否达到报警临界值;以及
如果已经达到所述报警临界值,则由报警通知模块执行任务积压报警。
5.一种分布式任务调度的装置,包括:
控制器模块,所述控制器模块被配置成,当所述装置接收到任务执行请求时,确定线程池是否繁忙,并且在所述线程池空闲的情况下,处理接收到的任务执行请求并对所述线程池生成任务线程;
线程池,所述线程池被配置成执行所生成的任务线程;以及
参数设置模块,所述参数设置模块被配置成,在任务完成之后,确定由所述线程池生成的执行线程是否继续执行;
其中,所述控制器进一步被配置成:
在确定所述线程池是否繁忙之前,确定是否校验调度;所述校验调度是指判断所述线程池是否繁忙。
6.根据权利要求5所述的装置,其中,所述参数设置模块进一步被配置成:
计算已执行的总任务数;以及
将已执行的总任务数与请求的总任务数进行比较,以便确定所述任务是否已经执行完成。
7.根据权利要求6所述的装置,其中,所述控制器进一步被配置成:如果确定没有完成所述任务,则从任务池取出参数信息预设定的任务数。
8.根据权利要求7所述的装置,其中,所述线程池进一步被配置成:执行所取出的任务,直到所有任务都已经执行完成。
9.根据权利要求5所述的装置,其中,所述控制器进一步被配置成:
如果确定所述线程池所生成的执行线程继续执行,则获取任务池中待执行的任务数;以及
确定所获取的待执行的任务数是否达到报警临界值。
10.根据权利要求9所述的装置,进一步包括:
报警通知模块,所述报警通知模块被配置成,如果已经达到所述报警临界值,则执行任务积压报警。
11.一种分布式任务调度的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
CN201510312490.3A 2015-06-09 2015-06-09 分布式任务调度的方法和装置 Active CN104915258B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510312490.3A CN104915258B (zh) 2015-06-09 2015-06-09 分布式任务调度的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510312490.3A CN104915258B (zh) 2015-06-09 2015-06-09 分布式任务调度的方法和装置

Publications (2)

Publication Number Publication Date
CN104915258A CN104915258A (zh) 2015-09-16
CN104915258B true CN104915258B (zh) 2019-07-02

Family

ID=54084339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510312490.3A Active CN104915258B (zh) 2015-06-09 2015-06-09 分布式任务调度的方法和装置

Country Status (1)

Country Link
CN (1) CN104915258B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786600B (zh) * 2016-02-02 2019-05-03 北京京东尚科信息技术有限公司 任务调度方法和装置
CN107179896A (zh) * 2016-03-09 2017-09-19 阿里巴巴集团控股有限公司 任务处理方法和装置
CN107479963A (zh) * 2016-06-08 2017-12-15 国家计算机网络与信息安全管理中心 一种任务分配方法及系统
CN107766137A (zh) * 2017-10-16 2018-03-06 北京京东尚科信息技术有限公司 一种任务处理方法和装置
CN114153573A (zh) * 2021-10-29 2022-03-08 深圳精智达技术股份有限公司 一种基于单线程池的多任务处理的方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721948B1 (en) * 2000-06-30 2004-04-13 Equator Technologies, Inc. Method for managing shared tasks in a multi-tasking data processing system
CN101236513A (zh) * 2007-01-30 2008-08-06 阿里巴巴公司 一种分布式任务系统和分布式任务管理方法
CN103197968A (zh) * 2013-03-18 2013-07-10 焦点科技股份有限公司 一种融合同步异步特点的线程池处理方法及系统
CN103294533A (zh) * 2012-10-30 2013-09-11 北京安天电子设备有限公司 任务流控制方法及系统
CN103744723A (zh) * 2014-01-24 2014-04-23 深圳联友科技有限公司 一种线程池的管理方法和管理系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721948B1 (en) * 2000-06-30 2004-04-13 Equator Technologies, Inc. Method for managing shared tasks in a multi-tasking data processing system
CN101236513A (zh) * 2007-01-30 2008-08-06 阿里巴巴公司 一种分布式任务系统和分布式任务管理方法
CN103294533A (zh) * 2012-10-30 2013-09-11 北京安天电子设备有限公司 任务流控制方法及系统
CN103197968A (zh) * 2013-03-18 2013-07-10 焦点科技股份有限公司 一种融合同步异步特点的线程池处理方法及系统
CN103744723A (zh) * 2014-01-24 2014-04-23 深圳联友科技有限公司 一种线程池的管理方法和管理系统

Also Published As

Publication number Publication date
CN104915258A (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
CN104915258B (zh) 分布式任务调度的方法和装置
CN106330576B (zh) 容器化微服务自动伸缩及迁移调度的方法、系统和设备
CN111104210A (zh) 一种任务处理方法、装置及计算机系统
CN109656782A (zh) 可视化调度监控方法、装置及服务器
CN113051019A (zh) 流程任务执行管控方法、装置以及设备
CN108132840B (zh) 一种分布式系统中的资源调度方法及装置
CN111191777A (zh) 一种神经网络处理器及其控制方法
CN114579285B (zh) 一种任务运行系统、方法及计算设备
CN108664381A (zh) 测试方法及装置
CN111443999A (zh) 数据并行处理方法、执行器、计算机设备和存储介质
CN112199180A (zh) 多任务调度的方法及装置、电子设备及可读存储介质
US20230342211A1 (en) Method and device for controlling hardware accelerator by using sw framework structure homogeneous multi-core accelerator for supporting acceleration of time-critical task
CN104407917B (zh) 一种基于jms的交易处理方法及装置
CN113094305A (zh) 一种异步通信处理方法、装置和存储介质
EP3859627A1 (en) Method, system, and apparatus for merging order goods and electronic device
CN111143148A (zh) 一种模型参数确定方法、装置及存储介质
CN109992382A (zh) 任务调度方法、装置及任务调度器
WO2018168908A1 (en) Notification apparatus, notification method and computer program therefor
CN103530742A (zh) 提高排程运算速度的方法及装置
CN112214286B (zh) 容器的启动方法、装置及电子设备
CN108287753A (zh) 计算机系统快速调度方法及装置
CN103647837B (zh) 多线程报告下载方法和装置
CN110865913B (zh) 一种压力测试的方法及装置
CN103914348B (zh) 在实时处理器线程之间分配处理器加载的方法
CN110018906B (zh) 调度方法、服务器及调度系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant