任务调度方法、装置、电子设备及存储介质与流程

    专利查询2023-04-02  83



    1.本技术涉及计算机技术领域,尤其涉及一种任务调度方法、装置、电子设备及存储介质。


    背景技术:

    2.在相关技术中,通常使用quartz框架来实现任务调度的功能,quartz是目前被广泛应用的任务调度框架,不仅功能强大而且配置灵活。
    3.但是quartz集群对应的调度容器依赖数据库行锁,存在性能瓶颈。当同一时刻要触发的任务数达到一定级别时,就会出现任务触发延时的问题。


    技术实现要素:

    4.本技术提供了一种任务调度方法、装置、电子设备及存储介质。
    5.根据本技术的第一方面,提供了一种任务调度方法,所述方法应用于基于quartz的任务调度系统,所述任务调度系统中包括多个调度器,每个所述调度器各自管理至少一个触发器,所述方法包括:
    6.在所述调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据所述目标触发器中的触发规则生成对应的任务;
    7.将所述对应的任务写入目标任务执行客户端的缓存队列中,完成对所述目标触发器的触发。
    8.在本技术的一些实施例中,所述任务包括标识和具体内容;所述将所述对应的任务写入目标任务执行客户端的缓存队列中,包括:
    9.将所述对应的任务的具体内容和标识写入数据库;
    10.将所述对应的任务的标识写入目标任务执行客户端的缓存队列中。
    11.在本技术的一些实施例中,所述方法还包括:
    12.在接收到所述目标任务执行客户端的任务读取请求时,获取所述任务读取请求中携带的待执行任务的标识;所述待执行任务的标识为所述目标任务执行客户端从对应缓存队列中获取得到的;
    13.根据所述待执行任务的标识,从所述数据库中读取所述待执行任务的具体内容;
    14.将读取到的所述待执行任务的具体内容发送给所述目标任务执行客户端进行执行。
    15.此外,在本技术的一些实施例中,所述方法还包括:
    16.响应于接收到触发器新增请求,根据所述触发器新增请求生成待增触发器,并匹配用于管理所述待增触发器的目标调度器。
    17.其中,所述匹配用于管理所述待增触发器的目标调度器,包括:
    18.获取所述待增触发器的名称;
    19.根据所述名称进行哈希,并通过一致性算法在所述多个调度器中确定与所述待增
    触发器匹配的目标调度器。
    20.根据本技术的第二方面,提供了一种任务调度装置,所述装置应用于基于quartz的任务调度系统,所述任务调度系统中包括多个调度器,每个所述调度器各自管理至少一个触发器,所述装置包括:
    21.生成模块,用于在所述调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据所述目标触发器中的触发规则生成对应的任务;
    22.写入模块,用于将所述对应的任务写入目标任务执行客户端的缓存队列中,完成对所述目标触发器的触发。
    23.在本技术的一些实施例中,所述任务包括标识和具体内容,所述写入模块具体用于:
    24.将所述对应的任务的具体内容和标识写入数据库;
    25.将所述对应的任务的标识写入目标任务执行客户端的缓存队列中。
    26.在本技术的一些实施例中,所述装置还包括:
    27.获取模块,用于在接收到所述目标任务执行客户端的任务读取请求时,获取所述任务读取请求中携带的待执行任务的标识;所述待执行任务的标识为所述目标任务执行客户端从对应缓存队列中获取得到的;
    28.读取模块,用于根据所述待执行任务的标识,从所述数据库中读取所述待执行任务的具体内容;
    29.发送模块,用于将读取到的所述待执行任务的具体内容发送给所述目标任务执行客户端进行执行。
    30.此外,在本技术的一些实施例中,所述装置还包括:
    31.新增模块,用于响应于接收到触发器新增请求,根据所述触发器新增请求生成待增触发器,并匹配用于管理所述待增触发器的目标调度器。
    32.其中,所述新增模块具体用于:
    33.获取所述待增触发器的名称;
    34.根据所述名称进行哈希,并通过一致性算法在所述多个调度器中确定与所述待增触发器匹配的目标调度器。
    35.根据本技术的第三方面,提供了一种电子设备,包括:
    36.至少一个处理器;以及
    37.与所述至少一个处理器通信连接的存储器;其中,
    38.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面的所述的方法。
    39.根据本技术的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行上述第一方面所述的方法。
    40.根据本技术的技术方案,由于该任务调度系统中包括多个调度器,且每个调度器各自管理至少一个触发器,所以可以通过增加调度器来增加行锁的数量,从而可以充分利用数据库的性能,达到增加并发任务数的目的。此外,在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,通过将生成的任务写入目标任务执行客户端的缓存队列中,以使目标任务执行客户端来执行对应的任务,实现了任务生成与任务执行的解耦,从
    而可以避免由于任务执行过程对线程池中线程的占用而造成任务触发的延迟,进而可以进一步提高并发任务的数量。
    41.应当理解,本部分所描述的内容并非旨在标识本技术的实施例的关键或重要特征,也不用于限制本技术的范围。本技术的其它特征将通过以下的说明书而变得容易理解。
    附图说明
    42.附图用于更好地理解本方案,不构成对本技术的限定。其中:
    43.图1为本技术实施例提出的一种任务调度方法的流程图;
    44.图2为本技术实施例提供的另一种任务调度方法的流程图;
    45.图3为本技术实施例中的一种新增触发器的流程图;
    46.图4为本技术实施例提供的一种任务调度装置的结构框图;
    47.图5为本技术实施例提供的另一种任务调度装置的结构框图;
    48.图6示出了可以用来实施本技术的实施例的示例电子设备600的示意性框图。
    具体实施方式
    49.以下结合附图对本技术的示范性实施例做出说明,其中包括本技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
    50.在本技术的一些实施例中涉及的用户数据均经过授权、获取、处理、传输等符合法律法规要求。
    51.需要说明的是,quartz是一个完全由java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。在相关技术中,通常使用quartz框架来实现任务调度的功能。
    52.但是quartz集群对应的调度容器依赖数据库行锁,存在性能瓶颈。当同一时刻要触发的任务数达到一定级别时,就会出现任务触发延时的问题。经过测试,quartz单集群触发任务的并发量超过100任务/s时就会出现延时。
    53.为了解决上述问题,本技术提出了一种任务调度方法、装置、电子设备及存储介质。
    54.图1为本技术实施例提出的一种任务调度方法的流程图。需要说明的是,本技术实施例中的任务调度方法可应用于本技术实施例中的任务调度装置,该装置可配置在电子设备中。本技术实施例中的任务调度方法可应用于基于quartz的任务调度系统,该任务调度系统中包括多个调度器,每个调度器各自管理至少一个触发器。该方法可以包括以下步骤:
    55.步骤101,在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据目标触发器中的触发规则生成对应的任务。
    56.需要说明的是,本技术实施例中的任务调度系统是基于quartz框架的,该系统在启动时,初始化多个调度器,这样可以通过增加调度器来增加数据库行锁的数量,从而可以充分利用数据库的性能,达到增大每秒并发任务数的目的。其中,每个调度器管理各自管理
    至少一个触发器,每个调度器通过扫表来获取自身管理的触发器的触发时间,以及时触发达到触发时间的触发器。
    57.本技术的发明人经试验发现,由于增加调度器会增加数据库行锁的数量,而数据库行锁的数量增大也会耗费数据库的性能,所以在一定范围内增大触发器的数量可以提升调度性能,超过该范围后,增大触发器的数量将不再提高调度性能。在本技术的一些实施例中,任务调度系统中的调度器数量可以根据基于实际情况的试验结果来确定。
    58.在本技术的一些实施例中,每新增一个触发器,系统均会为其匹配一个用于管理该触发器的调度器,并将该匹配关系存储在数据库中。这样,每个调度器在扫表获取触发器时,可以根据匹配关系,只获取自身管理的触发器。其中,为触发器匹配调度器的方式可以为随机匹配,可以根据预设的规则在多个触发器中确定与触发器匹配的调度器,本技术对此不作限定。
    59.在本技术的一些实施例中,待触发的目标触发器是指已达到触发时间的调度器。也就是说,每个调度器均可以从自身管理的至少一个触发器中获取到已达到触发时间的目标触发器,来触发该目标触发器,生成对应的任务。其实现方式可以包括:每个调度器均通过定时扫表,以在自身管理的触发器中获取即将达到触发时间的调度器,比如可以每次扫表时获取30s内到达触发时间的触发器;每个调度器对自身管理的即将到达触发时间的触发器进行监控,锁定数据库后获取到待触发的目标触发器;根据该目标触发器的触发规则生成对应的任务;将生成的任务写入数据库对应位置。
    60.步骤102,将对应的任务写入目标任务执行客户端的缓存队列中,完成对目标触发器的触发。
    61.在相关技术中,任务的执行过程将占用工作线程池中的工作线程,所以调度器在触发任务时需要先判断工作线程池中是否有空闲线程,在有空闲线程时获取数据库行锁来锁定数据库,再触发已达到触发时间的触发器;若生成的任务较多,工作线程池中没有空闲线程时,触发器需要等待至工作线程池中存在空闲线程时再触发任务;也就是说,由于任务执行对线程池中工作线程的占用,可能会造成任务的延迟触发,从而不利于系统的任务调度。
    62.为了解决上述问题,本技术实施例中的任务调度方法将任务生成与任务执行解耦,也就是说,将任务的生成与任务的执行过程分离,使任务的执行过程不再影响调度器对触发器的触发。在本技术实施例中,将生成的任务写入对应的任务执行客户端的缓存队列中,由任务执行客户端来执行任务,不再使用调度器容器中线程池的工作线程来执行任务,从而可以减少工作线程的占用,以避免由于工作线程占用,导致调度器在触发任务时的等待,进而可以提升任务调度的效率,增大任务的并发量。
    63.在本技术的一些实施例中,由于业务分类不同,所以每个业务的任务可以由对应业务的任务执行客户端来执行。其中,任务执行客户端可以理解为具备执行任务的能力的系统,或者终端设备。目标任务执行客户端是指与生成的任务所属的业务分类对应的任务执行客户端。作为一种示例,将对应的任务写入目标任务执行客户端的缓存队列中的实现方式可以为:在创建触发器时可以根据其对应任务的所属业务,为其关联对应的业务标识,并将关联关系存储在数据库中;获取待触发的目标触发器关联的业务标识,并根据业务标识来确定目标任务执行客户端;将对应的任务写入该目标任务执行客户端的缓存队列中。
    64.需要说明的是,任务写入目标任务执行客户端的缓存队列中之后,相当于完成了对目标触发器的触发,从而将调度器对应的数据库行锁释放,以进行下一个触发器的触发。
    65.根据本技术实施例的任务调度方法,由于该任务调度系统中包括多个调度器,且每个调度器各自管理至少一个触发器,所以可以通过增加调度器来增加行锁的数量,从而可以充分利用数据库的性能,达到增加并发任务数的目的。此外,在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,通过将生成的任务写入目标任务执行客户端的缓存队列中,以使目标任务执行客户端来执行对应的任务,实现了任务生成与任务执行的解耦,从而可以避免由于任务执行过程对线程池中线程的占用而造成任务触发的延迟,进而可以进一步提高并发任务的数量。
    66.为了减少任务触发的耗时,节省缓存队列的占用空间,本技术提出了又一个实施例。
    67.图2为本技术实施例提供的另一种任务调度方法的流程图。如图2所示,在上述实施例的基础上,该方法可以包括以下步骤:
    68.步骤201,在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据目标触发器中的触发规则生成对应的任务。
    69.需要说明的是,在本技术实施例中根据目标触发器中的触发规则生成的任务包括标识和具体内容。其中任务的标识可以是指任务编号等,任务的标识与任务的具体内容是一对一的关系。任务的具体内容可以包括执行任务的类、对应的目标触发器名称、状态等相关信息。
    70.步骤202,将对应的任务的具体内容和标识写入数据库。
    71.步骤203,将对应的任务的标识写入目标任务执行客户端的缓存队列中,完成对目标触发器的触发。
    72.也就是说,只将任务的标识写入对应的目标任务执行客户端的缓存队列中,这样不仅可以减少缓存队列的占用,也可以减少任务写入的时间占用。
    73.在本技术的一些实施例中,任务执行客户端在缓存队列中获取到任务的标识后,可以通过调用任务读取的接口,来获取对应任务的具体内容,以执行对应任务。所以本技术实施例的任务调度方法还可以包括以下步骤:
    74.步骤204,在接收到目标任务执行客户端的任务读取请求时,获取任务读取请求中携带的待执行任务的标识;其中,待执行任务的标识为目标任务执行客户端从对应缓存队列中获取得到的。
    75.可以理解,目标任务执行客户端可以从对应的缓存队列中获取到待执行任务的标识,为了获取该待执行任务的具体内容,可以通过调取任务读取接口向任务调度系统发送任务读取请求,且该读取请求中携带着待执行任务的标识,这样,任务调度执行系统在接收到目标任务执行客户端的任务读取请求时,可以在该读取请求中获取其携带的待执行任务的标识,以根据该标识来查找待执行任务的具体内容。
    76.步骤205,根据待执行任务的标识,从数据库中读取待执行任务的具体内容。
    77.由于数据库已存储了待执行任务的标识和具体内容,所以可以根据待执行任务的标识,在数据库中查找该标识对应的任务信息,从而可以在该任务信息中读取该待执行任务的具体内容。
    78.步骤206,将读取到的待执行任务的具体内容发送给目标任务执行客户端进行执行。
    79.也就是说,目标任务执行客户端接收到待执行任务的具体内容后,可根据待执行任务的具体内容来执行对应任务。
    80.在本技术的另一些实施例中,目标任务执行客户端可以通过接口调用,将待执行任务的执行信息反馈给任务调度系统中,比如目标任务执行客户端可以将任务执行的时间、状态等相关信息通过接口发送给任务调度系统,从而任务调度系统可以更新数据库中存储的任务信息。
    81.根据本技术实施例的任务调度方法,只将任务的标识写入目标任务执行客户端的缓存队列中,并在接收到目标任务执行客户端的任务读取请求时,根据读取请求中携带的待执行任务的标识,来将待执行任务的具体内容发送给目标任务执行客户端,以使其执行对应的任务。这样,一方面可以减少缓存队列的空间占用,另一方面也可以减少任务写入过程中的时间消耗,从而可以减少任务触发过程的时间,提高系统的任务并发量。
    82.在本技术的任务调度方法中,还包括触发器新增的过程,接下来将针对该过程进行介绍。
    83.图3为本技术实施例中的一种新增触发器的流程图。如图3所示,基于上述实施例,该过程可以包括以下步骤:
    84.步骤301,响应于接收到触发器新增请求,根据触发器新增请求生成待增触发器,并匹配用于管理待增触发器的目标调度器。
    85.在本技术的一些实施例中,用户可以使用用于新增触发器的终端,通过交互页面来发送触发器新增请求。该触发器新增请求中包含待新增触发器的触发规则,对应的任务执行类等相关信息,从而可以根据触发器新增请求来生成待新增触发器。由于任务调度系统中包含多个调度器,所以需要为待新增触发器匹配对应的目标调度器。作为一种示例,可以根据待新增触发器的名称来匹配目标调度器,也可以采用随机的方式来匹配目标调度器,或者采用其他预设方式可以匹配目标调度器,本技术对应不作限定。
    86.接下来将以针对根据待增触发器的名称匹配目标调度器为例,对其实现方式进行介绍,包括以下步骤:
    87.步骤301-1,获取待增触发器的名称。
    88.在本技术的一些实施例中,待增触发器的名称可以是触发器新增请求中携带的,也可以是在生成待增触发器时生成的,且待增触发器的名称是唯一的。也就是说,若待增触发器的名称可以是触发器新增请求中携带的,则获取待增触发器的名称的方式为在触发器新增请求中获取其携带的待新增触发器的名称;若待增触发器的名称是系统生成的,则此处可以直接使用生成的待增触发器的名称。
    89.步骤301-2,根据名称进行哈希,并通过一致性算法在多个调度器中确定与待增触发器匹配的目标调度器。
    90.为了均衡各调度器管理的触发器数量,提高任务调度的效率,本技术实施例采用一致性哈希算法来确定与待增触发器匹配的目标调度器。需要说明的是,通常使用一致性哈希算法来对服务请求与处理服务器之间的关系进行映射,一致性行哈希算法将处理数据器进行哈希计算,并将整个哈希值空间映射成一个虚拟的圆环,整个哈希空间的取值范围
    为0-2
    32-1,且整个空间按照顺时针方向组织,通过将服务请求使用哈希算法计算其对应的哈希值,然后根据哈希值的位置沿圆环顺时针查找,对应的第一个服务器为该请求的处理服务器,不仅有较强的可扩展性,也具有较强的负载均衡能力。
    91.在本技术的一些实施例中,可以使用每个调度器的名称进行哈希计算,并将得到的哈希模值对应到哈希环中;对待增触发器的名称采用相同的哈希算法计算对应的哈希模值,并对应的哈希环中,沿圆环顺时针查找到的第一个调度器即为与待增触发器匹配的目标调度器。
    92.根据本技术实施例的任务调度方法,在接收到触发器新增请求时,可以根据触发器新增请求来生成待增触发器,并匹配用于管理待增触发器的目标调度器,从而从多个调度器中选出与待增触发器匹配的调度器,以实现对待增触发器的管理。此外,通过使用一致性哈希算法来获取与待增触发器的目标调度器,来均衡各调度器管理,从而可以保证及时地触发任务,进而可以进一步提高任务调度系统的任务并发量。
    93.为了实现上述实施例,本技术提供了一种任务调度装置。
    94.图4为本技术实施例提供的一种任务调度装置的结构框图。该装置可用于基于quartz的任务调度系统,该任务调度系统中包括多个调度器,每个调度器各自管理至少一个触发器。如图4所示,该装置可以包括:
    95.生成模块401,用于在所述调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据所述目标触发器中的触发规则生成对应的任务;
    96.写入模块402,用于将所述对应的任务写入目标任务执行客户端的缓存队列中,完成对所述目标触发器的触发。
    97.在本技术的一些实施例中,所述任务包括标识和具体内容,所述写入模块具体用于:
    98.将所述对应的任务的具体内容和标识写入数据库;
    99.将所述对应的任务的标识写入目标任务执行客户端的缓存队列中。
    100.在本技术的一些实施例中,所述装置还可以包括:
    101.获取模块403,用于在接收到所述目标任务执行客户端的任务读取请求时,获取所述任务读取请求中携带的待执行任务的标识;所述待执行任务的标识为所述目标任务执行客户端从对应缓存队列中获取得到的;
    102.读取模块404,用于根据所述待执行任务的标识,从所述数据库中读取所述待执行任务的具体内容;
    103.发送模块405,用于将读取到的所述待执行任务的具体内容发送给所述目标任务执行客户端进行执行。
    104.根据本技术实施例的任务调度装置,由于该任务调度系统中包括多个调度器,且每个调度器各自管理至少一个触发器,所以可以通过增加调度器来增加行锁的数量,从而可以充分利用数据库的性能,达到增加并发任务数的目的。此外,在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,通过将生成的任务写入目标任务执行客户端的缓存队列中,以使目标任务执行客户端来执行对应的任务,实现了任务生成与任务执行的解耦,从而可以避免由于任务执行过程对线程池中线程的占用而造成任务触发的延迟,进而可以进一步提高并发任务的数量。
    105.图5为本技术实施例提供的另一种任务调度装置的结构框图。如图5所示,在上述实施例的基础上,该装置还可以包括:
    106.新增模块506,用于响应于接收到触发器新增请求,根据所述触发器新增请求生成待增触发器,并匹配用于管理所述待增触发器的目标调度器。
    107.其中,所述新增模块506具体用于:
    108.获取所述待增触发器的名称;
    109.根据所述名称进行哈希,并通过一致性算法在所述多个调度器中确定与所述待增触发器匹配的目标调度器。
    110.根据本技术实施例的任务调度装置,在接收到触发器新增请求时,可以根据触发器新增请求来生成待增触发器,并匹配用于管理待增触发器的目标调度器,从而从多个调度器中选出与待增触发器匹配的调度器,以实现对待增触发器的管理。此外,通过使用一致性哈希算法来获取与待增触发器的目标调度器,来均衡各调度器管理,从而可以保证及时地触发任务,进而可以进一步提高任务调度系统的任务并发量。
    111.基于本技术的实施例,本技术还提供了一种电子设备,至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述任一项任务调度方法。
    112.基于本技术的实施例,本技术还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行根据本技术实施例提供的前述任一项的任务调度方法。
    113.图6示出了可以用来实施本技术的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
    114.如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
    115.设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
    116.计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如任务调度方法。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或
    通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram 603并由计算单元601执行时,可以执行上文描述的任务调度方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务调度方法。
    117.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
    118.用于实施本技术的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
    119.在本技术的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
    120.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
    121.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、互联网和区块链网络。
    122.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通
    过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
    123.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术公开的技术方案所期望的结果,本文在此不进行限制。
    124.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本技术的精神和原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。

    技术特征:
    1.一种任务调度方法,其特征在于,所述方法应用于基于quartz的任务调度系统,所述任务调度系统中包括多个调度器,每个所述调度器各自管理至少一个触发器,所述方法包括:在所述调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据所述目标触发器中的触发规则生成对应的任务;将所述对应的任务写入目标任务执行客户端的缓存队列中,完成对所述目标触发器的触发。2.根据权利要求1所述的方法,其特征在于,所述任务包括标识和具体内容;所述将所述对应的任务写入目标任务执行客户端的缓存队列中,包括:将所述对应的任务的具体内容和标识写入数据库;将所述对应的任务的标识写入目标任务执行客户端的缓存队列中。3.根据权利要求2所述的方法,其特征在于,还包括:在接收到所述目标任务执行客户端的任务读取请求时,获取所述任务读取请求中携带的待执行任务的标识;所述待执行任务的标识为所述目标任务执行客户端从对应缓存队列中获取得到的;根据所述待执行任务的标识,从所述数据库中读取所述待执行任务的具体内容;将读取到的所述待执行任务的具体内容发送给所述目标任务执行客户端进行执行。4.根据权利要求1所述的方法,其特征在于,还包括:响应于接收到触发器新增请求,根据所述触发器新增请求生成待增触发器,并匹配用于管理所述待增触发器的目标调度器。5.根据权利要求4所述的方法,其特征在于,所述匹配用于管理所述待增触发器的目标调度器,包括:获取所述待增触发器的名称;根据所述名称进行哈希,并通过一致性算法在所述多个调度器中确定与所述待增触发器匹配的目标调度器。6.一种任务调度装置,其特征在于,所述装置应用于基于quartz的任务调度系统,所述任务调度系统中包括多个调度器,每个所述调度器各自管理至少一个触发器,所述装置包括:生成模块,用于在所述调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据所述目标触发器中的触发规则生成对应的任务;写入模块,用于将所述对应的任务写入目标任务执行客户端的缓存队列中,完成对所述目标触发器的触发。7.根据权利要求6所述的装置,其特征在于,所述任务包括标识和具体内容;所述写入模块具体用于:将所述对应的任务的具体内容和标识写入数据库;将所述对应的任务的标识写入目标任务执行客户端的缓存队列中。8.根据权利要求7所述的装置,其特征在于,还包括:获取模块,用于在接收到所述目标任务执行客户端的任务读取请求时,获取所述任务读取请求中携带的待执行任务的标识;所述待执行任务的标识为所述目标任务执行客户端
    从对应缓存队列中获取得到的;读取模块,用于根据所述待执行任务的标识,从所述数据库中读取所述待执行任务的具体内容;发送模块,用于将读取到的所述待执行任务的具体内容发送给所述目标任务执行客户端进行执行。9.根据权利要求6所述的装置,其特征在于,还包括:新增模块,用于响应于接收到触发器新增请求,根据所述触发器新增请求生成待增触发器,并匹配用于管理所述待增触发器的目标调度器。10.根据权利要求9所述的装置,其特征在于,所述新增模块具体用于:获取所述待增触发器的名称;根据所述名称进行哈希,并通过一致性算法在所述多个调度器中确定与所述待增触发器匹配的目标调度器。11.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至5中任一项所述的方法。12.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至5中任一项所述的方法。

    技术总结
    本申请公开了一种任务调度方法、装置、电子设备及存储介质,涉及计算机技术领域,其任务调度方法应用于基于Quartz的任务调度系统,任务调度系统中包括多个调度器,每个调度器各自管理至少一个触发器,该方法包括:在调度器从自身管理的至少一个触发器中获取到待触发的目标触发器时,根据目标触发器中的触发规则生成对应的任务;将对应的任务写入目标任务执行客户端的缓存队列中,完成对目标触发器的触发。该方案可以通过增加调度器,以及将任务生成与任务执行的解耦,来提高并发任务的数量。来提高并发任务的数量。来提高并发任务的数量。


    技术研发人员:田蒙
    受保护的技术使用者:京东科技信息技术有限公司
    技术研发日:2022.02.14
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-15956.html

    最新回复(0)