CN112559152B - 一种基于异步式编程的分布式任务注册及调度方法和系统 - Google Patents
一种基于异步式编程的分布式任务注册及调度方法和系统 Download PDFInfo
- Publication number
- CN112559152B CN112559152B CN202011515521.2A CN202011515521A CN112559152B CN 112559152 B CN112559152 B CN 112559152B CN 202011515521 A CN202011515521 A CN 202011515521A CN 112559152 B CN112559152 B CN 112559152B
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- executed
- information
- 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
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于异步式编程的分布式任务注册及调度方法和系统,包括:任务发起方注册任务信息;任务调度引擎接受模块获取任务信息,根据任务特征对相同任务进行合并后发送至待执行任务池;任务调度引擎执行模块根据待执行任务池中的任务信息,将符合条件的任务直接启动远程任务或将任务信息发布至任务执行队列;任务执行方获取任务执行队列中的任务信息,根据任务的执行策略启动任务。本发明可实现调度任务与应用解耦;通过定义任务执行策略改变以往单一执行模式,保证任务合理运行,降低服务器运行压力,满足高并发下的任务调度需求。
Description
技术领域
本发明涉及一种分布式任务注册及调度系统,尤其是涉及一种被高频触发的或对计算程序执行策略有特殊需求的计算系统。
背景技术
随着信息化技术的发展,业务核心系统延伸出来的子系统越来越多,子系统的业务需求对核心数据的依赖也越来越明显。为降低数据间对耦合,通过分布式任务调度系统能及时通知子系统的计算程序,保证系统间数据的一致性。但是在核心数据高频变化时,对任务调度系统和业务子系统的稳定运行提出了很高的需求。
在现有的技术中,任务调度系统主要解决了系统间解耦问题。当大量任务需要调度时,会导致调度系统的工作压力激增。随着任务注册队列不断的涌入新的调度需求,甚至会造成大量任务积压,业务一致性得不到保证。另外,高频次的触发子系统进行计算,也会造成子系统计算压力暴增,对服务器的稳定运行带来极大的风险。
发明内容
本发明的目的在于提供一种基于异步式编程的分布式任务注册及调度的实现方法。通过异步式编程将任务注册队列中的任务分发至不同的处理单元,提高了任务注册模块的高效性。通过任务合并,避免了不必要的任务调度,保证了任务执行方的稳定运行。最后,多种任务执行策略能够合理规划资源,满足不同场景下的任务调度需求。
为实现上述技术目的,本发明采用以下技术方案。提供一种基于异步式编程的分布式任务注册及调度方法,其特征在于,包括以下步骤:根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;从任务注册队列获取任务信息后,根据任务类型将任务信息待执行任务池;以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列; 任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理。
进一步地,根据任务类型将任务信息待执行任务池的具体方法包括以下步骤:所述任务类型包括可合并类型、更新类型以及常规类型,当任务类型为可合并类型时,将指定时间段内的相同内容合并成一条任务后,发送至待执行任务池;当任务类型为更新类型务时,判断当前待执行任务池中是否存在未被执行的相同任务,如果存在会将本次获取的任务信息更新至待执行任务池;如果不存在则将本次任务信息发送至待执行任务池;当任务类型为常规类型时,则将本次任务信息直接发送至待执行任务池。
进一步地,调用设定的触发URL来启动任务执行体后,根据本任务的执行计划更新或删除待执行任务池中的任务。
进一步地,所述任务信息中还包括任务执行体标识信息,任务执行方从任务执行队列中获取待执行任务信息后,只处理任务信息中任务执行体标识信息与自身一致的任务。
进一步地,所述任务信息包括执行类,所述任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理,所述任务控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
再进一步地,分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务具体包括:
所述执行策略包括队列方式、并行方式、取消当前方式、忽略当前方式和延迟方式;当任务的执行策略为“队列”方式时:分发线程将任务按照执行类为单位,为该执行类创建一个执行队列,依次将任务发送至执行线程池中执行,直到将执行队列中的任务全部执行完成。
当任务的执行策略为并行方式时:分发线程直接将该任务发送至执行线程池中执行。
当任务的执行策略为取消当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则调用当前任务的取消逻辑,待取消成功后将本次任务发送至执行线程池中执行;如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为忽略当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则舍弃当前的任务,不对本次任务做任何处理,如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为延迟方式时:分发线程按照执行类为单位记录前次任务执行时间,如果当前时间超过延迟时间时,将本次任务发送至执行线程池中执行;如果尚未达到延迟时间会创建一个定时器,在时间到达时将任务发送至执行线程池中执行。
进一步地,通过包装类对执行策略为取消当前的任务进行封装,包装类设计成包含当前任务和前次任务信息,包装类的执行方法中调用前次任务的取消方法,直到取消成功后再调用当前任务的执行方法。
另一方面,本发明提供一种基于异步式编程的分布式任务注册及调度系统,包括:任务注册方、任务接收模块、任务执行模块和任务执行方;
所述任务注册方用于根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;
所述任务接收模块用于从任务注册队列获取任务信息后,根据任务类型将任务信息待执行任务池;
所述任务执行模块用于以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列;
所述任务执行方用于从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理。
进一步地,所述任务控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
本发明所取得的有益效果:
使用本发明可保证任务调度引擎的高效性、稳定性、容错性,改变了以往任务调度引擎的过载带来的任务触发不及时、丢失等状况。
使用本发明能够显著加强任务执行方的处理效率,特别是根据任务特征选择不同的执行策略能够合理的优化服务器资源,改变了以往任务执行方大量任务同时执行带来的服务器压力,甚至奔溃的风险。
附图说明
图1是具体实施例提供的一种基于异步式编程的分布式任务注册及调度的实现方法的流程图;
图2是具体实施例提供中从注册任务到任务执行过程的数据流图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
实施例1:一种基于异步式编程的分布式任务注册及调度方法,包括以下步骤:根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;从任务注册队列获取任务信息后,根据任务类型将任务信息待执行任务池;以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列; 任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理。
根据任务类型将任务信息待执行任务池的具体方法包括以下步骤:所述任务类型包括可合并类型、更新类型以及常规类型,当任务类型为可合并类型时,将指定时间段内的相同内容合并成一条任务后,发送至待执行任务池;当任务类型为更新类型务时,判断当前待执行任务池中是否存在未被执行的相同任务,如果存在会将本次获取的任务信息更新至待执行任务池;如果不存在则将本次任务信息发送至待执行任务池;当任务类型为常规类型时,则将本次任务信息直接发送至待执行任务池。
调用设定的触发URL来启动任务执行体后,根据本任务的执行计划更新或删除待执行任务池中的任务。
实施例2:在实施例1的基础上,本实施例提供的一种基于异步式编程的分布式任务注册及调度方法,所述任务信息中还包括任务执行体标识信息,任务执行方从任务执行队列中获取待执行任务信息后,只处理任务信息中任务执行体标识信息与自身一致的任务。
本实施例中所述任务信息还包括执行类,所述任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理,所述任务控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务具体包括:
所述执行策略包括队列方式、并行方式、取消当前方式、忽略当前方式和延迟方式;当任务的执行策略为“队列”方式时:分发线程将任务按照执行类为单位,为该执行类创建一个执行队列,依次将任务发送至执行线程池中执行,直到将执行队列中的任务全部执行完成。
当任务的执行策略为并行方式时:分发线程直接将该任务发送至执行线程池中执行。
当任务的执行策略为取消当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则调用当前任务的取消逻辑,待取消成功后将本次任务发送至执行线程池中执行;如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为忽略当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则舍弃当前的任务,不对本次任务做任何处理,如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为延迟方式时:分发线程按照执行类为单位记录前次任务执行时间,如果当前时间超过延迟时间时,将本次任务发送至执行线程池中执行;如果尚未达到延迟时间会创建一个定时器,在时间到达时将任务发送至执行线程池中执行。
实施例3:本实施如图1所示的流程图进行。一种基于异步式编程的分布式任务注册及调度方法,包括:
(1)任务调度引擎的任务接收模块处理任务注册信息
任务注册方根据业务需求将任务信息按照指定格式发送至任务注册队列,任务信息其中主要包括以下信息:任务执行体ID、执行类、计划开始执行时间、任务类型、任务触发URL、是否可忽略、执行策略、执行计划(Cron表达式描述)、任务执行上下文。
任务接收模块的主要通过异步式编程框架Akka来实现。Akka对构建高并发、高容错性的分布式应用方面有良好的支持,其主要基于Actor模型,Actor之间通过消息传递。任务接收模块主要定义了三种Actor,分别为:任务合并单元、更新处理单元、常规处理单元。
任务接收模块从任务注册队列获取任务信息后,根据任务类型分别将任务信息分发至不同的Actor进行处理。当任务类型为“可合并”型任务时,会根据指定时间段内的相同内容合并成一条任务后,发送至待执行任务池。当任务类型为“更新”型任务时,会判断当前待执行任务池中是否存在未被执行的相同任务,如果存在会将本次任务中的包含的信息更新至待执行任务池;如果不存在则将本次任务发送至待执行任务池。当任务类型为“常规”型任务时,则将本次任务直接发送至待执行任务池。
处理任务注册信息中如何快速、高效的处理注册任务是其难点,因为应用注册方会同时注册大批量的任务。此时通过akka的事件驱动机制及时触发相应的逻辑尤为重要。
(2)任务调度引擎的任务执行模块发布/执行任务
任务执行模块以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行。当任务需要执行时,如果该任务信息中当任务触发URL有设定值时,会通过异步调用该触发URL来启动任务执行体。如果未设定任务触发URL,会将任务信息发送至任务执行队列。任务触发完成后,会根据本任务的执行计划更新或删除任务池中的任务。
(3)任务执行方的执行控制器启动任务
任务执行方从任务执行队列中获取“任务执行体ID”与自身一致的待执行任务信息后,将任务交由任务执行控制器进行处理。任务执行控制器主要包含一个分发线程、一个执行线程池。分发线程主要按照任务的 “执行策略”控制任务执行类以不同的方式执行。执行线程池主要用来执行各任务。
当任务的执行策略为“队列”方式时:分发线程会将任务按照 “执行类”为单位,为该执行类创建一个执行队列,依次将任务发送至执行线程池中执行,直到将执行队列中的任务全部执行完成。
当任务的执行策略为“并行”方式时:分发线程会直接将该任务发送至执行线程池中执行。
当任务的执行策略为“取消当前”方式时:分发线程会判断任务执行线程池中是否存在与本任务相同的“执行类”在运行,如果存在则调用当前任务的取消逻辑,待取消成功后将本次任务发送至执行线程池中执行。如果不存在,直接将该任务发送至执行线程池中执行。
当任务的执行策略为“忽略当前”方式时:分发线程会判断任务执行线程池中是否存在与本任务相同的“执行类”在运行,如果存在则舍弃当前的任务,不对本次任务做任何处理。如果不存在,直接将该任务发送至执行线程池中执行。
当任务的执行策略为“延迟”方式时:分发线程会按照“执行类”为单位记录前次任务执行时间,如果当前时间超过延迟时间时,将本次任务发送至执行线程池中执行;如果尚未达到延迟时间会创建一个定时器,在时间到达时将任务发送至执行线程池中执行。
不同执行策略的处理方式各异,实现难度也各异。其中“取消当前”型任务处理难度较大。因为所有的任务都是在任务执行线程池中运行,如何获取当前任务的引用以及如何判断任务取消成功也是一个处理难点。实施时可通过包装类对方式对“取消当前”型任务进行封装,包装类可设计成包含当前任务、前次任务等信息。包装类的执行方法中首先需要调用前次任务的取消方法,直到取消成功后再调用当前任务的执行方法。
本实施例从注册任务到任务执行过程的数据流图如图2所示,首先任务接收模块接收到注册任务后,对任务信息将相同的任务进行合并后更新至任务池,以保证相同的任务不会被多次触发;然后任务执行模块获取任务池任务后,根据任务性质直接启动任务执行程序或发布任务执行信息;最后,任务执行方的执行控制器会根据任务注册时指定的策略启动任务执行程序。通过异步式编程将任务注册队列中的任务分发至不同的处理单元,提高了任务注册模块的高效性。通过任务合并,避免了不必要的任务调度,保证了任务执行方的稳定运行。最后,多种任务执行策略能够合理规划资源,满足不同场景下的任务调度需求。
实施例4:与以上实施例提供的一种基于异步式编程的分布式任务注册及调度方法相对应的,如图2所示,本实施例提供了一种基于异步式编程的分布式任务注册及调度系统,包括:任务注册方、任务接收模块、任务执行模块和任务执行方;
所述任务注册方用于根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;
所述任务接收模块用于从任务注册队列获取任务信息后,根据任务类型将任务信息待执行任务池;
所述任务执行模块用于以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列;
所述任务执行方用于从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理。
进一步地,所述任务控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
本实施例中,主要包括:(1)任务调度引擎的任务接收模块处理任务注册信息
任务注册方将需调度的任务发送至任务注册队列。任务调度引擎的任务接收模块获取任务后根据任务类型将任务分发至不同的处理单元,对任务进行合并/更新等操作后,更新待执行任务池。重复以上操作直到任务注册队列没有新的任务调度需求。
(2)任务调度引擎的任务执行模块发布/执行任务
任务调度引擎的任务执行模块从待执行任务池中获取满足当前可触发的任务,根据任务设置项选择不同的触发方式。任务调度引擎以周期性的方式启动任务执行模块,保证待执行任务池中的任务能及时触发。
(3)任务执行方的执行控制器启动任务
任务执行方通过监听的方式从任务执行队列中获取需要处理的任务后,将任务交给任务执行控制器进行处理,任务执行控制器会根据任务执行策略选择不同的方式启动任务,保证任务可靠,高效的执行完成。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (8)
1.一种基于异步式编程的分布式任务注册及调度方法,其特征在于,包括以下步骤:根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;从任务注册队列获取任务信息后,根据任务类型将任务信息发送至待执行任务池;以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列; 任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理;
根据任务类型将任务信息发送至待执行任务池的具体方法包括以下步骤:
所述任务类型包括可合并类型、更新类型以及常规类型,当任务类型为可合并类型时,将指定时间段内的相同内容合并成一条任务后,发送至待执行任务池;当任务类型为更新类型务时,判断当前待执行任务池中是否存在未被执行的相同任务,如果存在会将本次获取的任务信息更新至待执行任务池;如果不存在则将本次任务信息发送至待执行任务池;当任务类型为常规类型时,则将本次任务信息直接发送至待执行任务池。
2.根据权利要求1所述的一种基于异步式编程的分布式任务注册及调度方法,其特征在于,调用设定的触发URL来启动任务执行体后,根据本任务的执行计划更新或删除待执行任务池中的任务。
3.根据权利要求1所述的一种基于异步式编程的分布式任务注册及调度方法,其特征在于,所述任务信息中还包括任务执行体标识信息,任务执行方从任务执行队列中获取待执行任务信息后,只处理任务信息中任务执行体标识信息与自身一致的任务。
4.根据权利要求1所述的一种基于异步式编程的分布式任务注册及调度方法,其特征在于,所述任务信息包括执行类,所述任务执行方从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理,所述任务执行控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
5.根据权利要求4所述的一种基于异步式编程的分布式任务注册及调度方法,其特征在于,分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务具体包括:
所述执行策略包括队列方式、并行方式、取消当前方式、忽略当前方式和延迟方式;当任务的执行策略为队列方式时:分发线程将任务按照执行类为单位,为该执行类创建一个执行队列,依次将任务发送至执行线程池中执行,直到将执行队列中的任务全部执行完成;当任务的执行策略为并行方式时:分发线程直接将该任务发送至执行线程池中执行;当任务的执行策略为取消当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则调用当前任务的取消逻辑,待取消成功后将本次任务发送至执行线程池中执行;如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为忽略当前方式时:分发线程判断任务执行线程池中是否存在与本任务相同的执行类在运行,如果存在则舍弃当前的任务,不对本次任务做任何处理,如果不存在,直接将该任务发送至执行线程池中执行;
当任务的执行策略为延迟方式时:分发线程按照执行类为单位记录前次任务执行时间,如果当前时间超过延迟时间时,将本次任务发送至执行线程池中执行;如果尚未达到延迟时间会创建一个定时器,在时间到达时将任务发送至执行线程池中执行。
6.根据权利要求4所述的一种基于异步式编程的分布式任务注册及调度方法,其特征在于,通过包装类对执行策略为取消当前的任务进行封装,包装类设计成包含当前任务和前次任务信息,包装类的执行方法中调用前次任务的取消方法,直到取消成功后再调用当前任务的执行方法。
7.一种基于异步式编程的分布式任务注册及调度系统,其特征在于,包括:
任务注册方、任务接收模块、任务执行模块和任务执行方;
所述任务注册方用于根据业务需求将任务信息按照指定格式发送至任务注册队列,所述任务信息包括任务类型、任务触发URL以及执行策略;
所述任务接收模块用于从任务注册队列获取任务信息后,根据任务类型将任务信息待执行任务池;
所述任务执行模块用于以定期检查的方式,根据待执行任务池中的任务信息判断当前任务是否需要执行,若需要执行,则判断任务触发URL是否有设定值,如果有设定值则通过异步调用设定的触发URL来启动任务执行体;若任务触发URL没有设定值,则将任务信息发送至任务执行队列;
所述任务执行方用于从任务执行队列中获取待执行任务信息后将任务交由任务执行控制器进行处理;根据任务类型将任务信息发送至待执行任务池的具体方法包括以下步骤:
所述任务类型包括可合并类型、更新类型以及常规类型,当任务类型为可合并类型时,将指定时间段内的相同内容合并成一条任务后,发送至待执行任务池;当任务类型为更新类型务时,判断当前待执行任务池中是否存在未被执行的相同任务,如果存在会将本次获取的任务信息更新至待执行任务池;如果不存在则将本次任务信息发送至待执行任务池;当任务类型为常规类型时,则将本次任务信息直接发送至待执行任务池。
8.根据权利要求7所述的一种基于异步式编程的分布式任务注册及调度系统,其特征在于,所述任务执行控制器包括一个分发线程和一个执行线程池,所述分发线程按照任务信息中的执行策略控制采用所述任务信息中的执行类对应的方式执行,所述执行线程池执行各任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011515521.2A CN112559152B (zh) | 2020-12-21 | 2020-12-21 | 一种基于异步式编程的分布式任务注册及调度方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011515521.2A CN112559152B (zh) | 2020-12-21 | 2020-12-21 | 一种基于异步式编程的分布式任务注册及调度方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559152A CN112559152A (zh) | 2021-03-26 |
CN112559152B true CN112559152B (zh) | 2022-08-09 |
Family
ID=75031237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011515521.2A Active CN112559152B (zh) | 2020-12-21 | 2020-12-21 | 一种基于异步式编程的分布式任务注册及调度方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559152B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578380B (zh) * | 2023-04-13 | 2024-01-23 | 浪潮智慧科技有限公司 | 一种数据采集工具的集群任务调度方法、设备及介质 |
CN117032999B (zh) * | 2023-10-09 | 2024-01-30 | 之江实验室 | 一种基于异步运行时的cpu-gpu协同调度方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834722B (zh) * | 2015-05-12 | 2018-03-02 | 网宿科技股份有限公司 | 基于cdn的内容管理系统 |
CN112000445A (zh) * | 2020-07-08 | 2020-11-27 | 苏宁云计算有限公司 | 分布式任务调度的方法及系统 |
-
2020
- 2020-12-21 CN CN202011515521.2A patent/CN112559152B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112559152A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559152B (zh) | 一种基于异步式编程的分布式任务注册及调度方法和系统 | |
CN107450971B (zh) | 任务处理方法及装置 | |
CN113569987A (zh) | 模型训练方法和装置 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
US11429448B2 (en) | Background job processing framework | |
CN107122232B (zh) | 一种多媒体任务处理装置及方法 | |
CN111651864B (zh) | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 | |
CN107423122A (zh) | 一种复杂运维作业编排与调度系统及其方法 | |
CN111190961B (zh) | 一种动态优化的多线程数据同步方法及系统 | |
CN113342532A (zh) | 基于Zookeeper的分布式任务调度方法及系统 | |
CN113821322B (zh) | 一种松耦合的分布式工作流协调系统和方法 | |
CN112162840B (zh) | 一种基于中断重入机制的协程处理及管理方法 | |
CN113238764A (zh) | 基于dag图的软件交付方法、系统、电子设备及可读存储介质 | |
CN117251269A (zh) | Jenkins资源管理方法、装置、设备及存储介质 | |
CN116610351A (zh) | 服务端热升级方法、终端设备及计算机可读存储介质 | |
CN110750362A (zh) | 生物信息的分析方法、装置和存储介质 | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
CN112835692B (zh) | 一种日志消息驱动任务方法、系统、存储介质及设备 | |
CN111638965B (zh) | 基于栅栏复制与握手的命令队列间栅栏同步方法及系统 | |
CN111078666A (zh) | 基于跨中心多数据库的自动化卸数供数的方法 | |
CN116614551B (zh) | 基于模板的多任务异步下载方法、系统、设备及介质 | |
KR100321408B1 (ko) | 처리기한에따른데이터처리순서에의한실시간다중처리시스템및그처리방법 | |
CN116028544B (zh) | 基于openstack的定时任务动态添加方法 | |
CN114265672A (zh) | 一种基于多租户分布式绩效系统的并行调度方案和系统 | |
CN114173417A (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 |