1.本技术涉及任务调度技术领域,尤其是涉及到一种任务调度方法及装置、存储介质、计算机设备。
背景技术:
2.随着互联网和计算机技术的发展,人们在生活中越来越多的使用电子商务平台,例如线上点餐、使用线上超市等等。订单的履约速度和成功率是影响用户在平台上留存的重要因素。对于订单量较大的应用场景,目前的订单履约系统,丢单、订单处理时间过长等异常情况时有发生,订单履约质量亟待提升。
技术实现要素:
3.有鉴于此,本技术提供了一种任务调度方法及装置、存储介质、计算机设备,有助于提高任务执行的可靠性和时效性。
4.根据本技术的一个方面,提供了一种任务调度方法,包括:
5.获取待处理任务,将所述待处理任务记录在任务库中;
6.基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;
7.响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。
8.可选地,所述对所述调度任务进行处理,具体包括:
9.基于所述线程池处理所述调度任务;或者,
10.将所述调度任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
11.识别所述调度任务中的第一调度任务,将所述第一调度任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一调度任务,并基于所述线程池处理所述调度任务中的第二调度任务,其中,所述第一调度任务包括对应的时效性满足预设时效条件的任务,所述第二调度任务包括所述调度任务中除所述第一调度任务外的其他任务。
12.可选地,所述对所述调度任务进行处理之前,所述方法还包括:
13.基于所述调度任务的重试数据,确定所述调度任务的重试时间,其中,所述重试数据包括所述调度任务的重试次数和/或上次重试时间;
14.基于所述调度任务的重试时间,对所述调度任务进行处理。
15.可选地,所述基于线程池处理所述任务库中的落库任务之前,所述方法还包括:
16.基于预设熔断配置对所述任务库中的落库任务进行熔断校验,并在所述落库任务通过熔断校验时,执行所述基于线程池处理所述任务库中的落库任务;
17.相应地,所述对所述调度任务进行处理之前,所述方法还包括:
18.基于所述预设熔断配置对所述调度任务进行熔断校验,并在所述调度任务通过熔
断校验时,执行所述对所述调度任务进行处理。
19.可选地,所述基于线程池处理所述任务库中的落库任务之后,所述方法还包括:
20.若所述落库任务处理失败,则将处理失败的落库任务作为补偿任务存储至预设数据库中;
21.响应于任务补偿信号,捞取所述预设数据库中的所述补偿任务,并对所述补偿任务进行处理。
22.可选地,所述对所述补偿任务进行处理,具体包括:
23.基于所述线程池处理所述补偿任务;或者,
24.将所述补偿任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
25.识别所述补偿任务中的第一补偿任务,将所述第一补偿任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一补偿任务,并基于所述线程池处理所述补偿任务中的第二补偿任务,其中,所述第一补偿任务包括对应的时效性满足预设时效条件的任务,所述第二补偿任务包括所述补偿任务中除所述第一补偿任务外的其他任务。
26.可选地,所述获取待处理任务之前,所述方法还包括:
27.接收待处理订单,其中,所述待处理订单的类型包括外卖订单、卡券订单、商品订单中至少一种;
28.依据所述待处理订单,生成所述待处理任务。
29.根据本技术的另一方面,提供了一种任务调度装置,包括:
30.任务落库模块,用于获取待处理任务,将所述待处理任务记录在任务库中;
31.任务处理模块,用于基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;
32.任务调度模块,用于响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。
33.可选地,所述任务调度模块,具体用于:
34.基于所述线程池处理所述调度任务;或者,
35.将所述调度任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
36.识别所述调度任务中的第一调度任务,将所述第一调度任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一调度任务,并基于所述线程池处理所述调度任务中的第二调度任务,其中,所述第一调度任务包括对应的时效性满足预设时效条件的任务,所述第二调度任务包括所述调度任务中除所述第一调度任务外的其他任务。
37.可选地,所述任务调度模块,还用于:所述对所述调度任务进行处理之前,基于所述调度任务的重试数据,确定所述调度任务的重试时间,其中,所述重试数据包括所述调度任务的重试次数和/或上次重试时间;基于所述调度任务的重试时间,对所述调度任务进行处理。
38.可选地,所述装置还包括:
39.熔断模块,用于在所述基于线程池处理所述任务库中的落库任务之前,基于预设熔断配置对所述任务库中的落库任务进行熔断校验,并在所述落库任务通过熔断校验时,所述任务处理模块执行所述基于线程池处理所述任务库中的落库任务;
40.相应地,所述装置还包括:
41.熔断模块,还用于在所述对所述调度任务进行处理之前,基于所述预设熔断配置对所述调度任务进行熔断校验,并在所述调度任务通过熔断校验时,所述任务调度模块执行所述对所述调度任务进行处理。
42.可选地,所述装置还包括:
43.任务补偿模块,用于所述基于线程池处理所述任务库中的落库任务之后,若所述落库任务处理失败,则将处理失败的落库任务作为补偿任务存储至预设数据库中;响应于任务补偿信号,捞取所述预设数据库中的所述补偿任务,并对所述补偿任务进行处理。
44.可选地,所述任务补偿模块,具体用于:
45.基于所述线程池处理所述补偿任务;或者,
46.将所述补偿任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
47.识别所述补偿任务中的第一补偿任务,将所述第一补偿任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一补偿任务,并基于所述线程池处理所述补偿任务中的第二补偿任务,其中,所述第一补偿任务包括对应的时效性满足预设时效条件的任务,所述第二补偿任务包括所述补偿任务中除所述第一补偿任务外的其他任务。
48.可选地,所述装置还包括:
49.任务生成模块,用于所述获取待处理任务之前,接收待处理订单,其中,所述待处理订单的类型包括外卖订单、卡券订单、商品订单中至少一种;依据所述待处理订单,生成所述待处理任务。
50.依据本技术又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任务调度方法。
51.依据本技术再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任务调度方法。
52.借由上述技术方案,本技术提供的一种任务调度方法及装置、存储介质、计算机设备,获取待处理任务后,将待处理任务记录在任务库中,通过线程池对记录在任务库中的落库任务进行异步处理,并对已处理的落库任务进行锁定,另外,响应于任务调度触发信号,对任务库中未锁定的落库任务进行捞取得到调度任务,并对调度任务进行处理。本技术实施例通过对任务库中未处理过的任务进行捞取和处理,有助于避免任务处理过程中时因异常造成任务无法执行,从而导致任务订单丢失、订单履约时间过长等情况发生,提高了任务执行的可靠性和时效性,进一步提升了用户体验。
53.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
54.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
55.图1示出了本技术实施例提供的一种任务调度方法的流程示意图;
56.图2示出了本技术实施例提供的另一种任务调度方法的流程示意图;
57.图3示出了本技术实施例提供的又一种任务调度方法的流程示意图;
58.图4示出了本技术实施例提供的一种任务调度装置的结构示意图。
具体实施方式
59.下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
60.在本实施例中提供了一种任务调度方法,如图1所示,该方法包括:
61.步骤101,获取待处理任务,将所述待处理任务记录在任务库中;
62.步骤102,基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;
63.步骤103,响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。
64.本技术实施例可以应用于任务处理场景中,实现任务的异步处理,尤其适用于实时性高、吞吐量大的应用场景。以针对电子商务平台的订单进行处理为例,在该实施例中,当用户提交订单时,将订单转换为待处理的订单任务,即待处理任务,将待处理任务进行任务落库,持久化记录在预设的任务库中,然后基于线程池对任务库中的落库任务进行处理,同时,当任务在线程池开始异步处理时,将已处理的落库任务进行锁定,具体可以基于落库任务构建任务队列,通过线程池对任务队列中的任务进行处理。进一步,为保证任务的处理成功率和时效性,本技术实施例中还可以对任务库中的落库任务进行调度执行,以免上述的任务执行逻辑在进行任务执行时因异常导致任务无法执行。具体来说,可以按固定时间间隔或特定时间间隔规律,产生任务调度触发信号,基于该信号对任务库进行扫描并触发任务执行,保证任务库中任务能够有效执行,完成订单履约。在实际应用场景中,由于对落库任务进行处理时,会进行任务锁定,因此为避免任务重复执行,响应于任务调度触发信号,可以直接对任务库中未锁定的落库任务进行批量捞取获得调度任务,进而对捞取到的调度任务进行处理,从而提升任务执行的可靠性和效率。
65.通过应用本实施例的技术方案,获取待处理任务后,将待处理任务记录在任务库中,通过线程池对记录在任务库中的落库任务进行异步处理,并对已处理的落库任务进行锁定,另外,响应于任务调度触发信号,对任务库中未锁定的落库任务进行捞取得到调度任务,并对调度任务进行处理。本技术实施例通过对任务库中未处理过的任务进行捞取和处理,有助于避免任务处理过程中时因异常造成任务无法执行,从而导致任务订单丢失、订单履约时间过长等情况发生,提高了任务执行的可靠性和时效性,进一步提升了用户体验。
66.进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种任务调度方法,如图2所示,该方法包括:
67.步骤201,接收待处理订单,其中,所述待处理订单的类型包括外卖订单、卡券订
单、商品订单中至少一种;依据所述待处理订单,生成所述待处理任务,将所述待处理任务记录在任务库中。
68.以应用于提供本地生活服务的电子商务平台为例,本地生活服务通常包括到家、到店两个服务板块,包含餐饮外卖、商品零售、卡券团购等众多服务场景,这类交易相比于传统的实物类电商有一个重要的差异点是,本地生活的交易对于履约的时效性要求高。举例来说,到家场景中外卖从用户下单到用户收到外卖之间一般不超过一个小时;到店场景中用户到店后发现店家在线上售卖优惠券,用户在平台上购买后一般要求立马发放相应的凭证。在这样的服务背景下,如果在履约过程中发生了丢单、处理延迟等问题会对用户体验造成严重影像,也会损害平台的品牌和口碑。为避免上述问题,本技术针对接收到的待处理订单,例如外卖订单、卡券订单、商品订单等,生成对应的待处理任务,并记录在任务库中,以便基于任务库实现对待处理订单的异步处理。
69.步骤202,基于预设熔断配置对所述任务库中的落库任务进行熔断校验,并在所述落库任务通过熔断校验时,基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定。
70.在本技术实施例中,对任务库中的任务进行执行之前,还可以读取预先设定的熔断配置,对任务库中的落库任务进行熔断校验,针对特定条件的任务做阻断挂起,具体的,如果任务库中的落库任务命中了预设熔断配置,那么直接阻断该任务的执行。而如果通过了熔断校验,那么基于线程池对任务库中的落库任务进行异步处理,当任务在线程池开始异步处理时,可以先对处理中的任务进行锁定控制并发。
71.步骤203,若所述落库任务处理失败,则将处理失败的落库任务作为补偿任务存储至预设数据库中。
72.步骤204,响应于任务补偿信号,捞取所述预设数据库中的所述补偿任务,并对所述补偿任务进行处理。
73.在该实施例中,如果线程池对某个落库任务处理失败,为了避免丢单,可以将处理失败的落库任务作为补偿任务放入到预设数据库中,例如放入hbase中,以便后续基于预设数据库中的异常任务,进行任务积压管控和快速恢复。针对任务处理中发生了异常、存储在预设数据库中的补偿任务,平台后台可以触发恢复执行,基于预设数据库中的补偿任务,可以直接从后台发起,批量捞取预设数据库中的补偿任务,并批量触发这些任务做快速恢复和重试。
74.在本技术实施例中,可选地,步骤204中“对所述补偿任务进行处理”,具体包括:
75.步骤204-1,基于所述线程池处理所述补偿任务;或者,
76.步骤204-2,将所述补偿任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
77.步骤204-3,识别所述补偿任务中的第一补偿任务,将所述第一补偿任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一补偿任务,并基于所述线程池处理所述补偿任务中的第二补偿任务,其中,所述第一补偿任务包括对应的时效性满足预设时效条件的任务,所述第二补偿任务包括所述补偿任务中除所述第一补偿任务外的其他任务。
78.在该实施例中,对于补偿任务,可以按照与任务库中落库任务同样的处理方式进
行处理,即基于线程池处理补偿任务;也可以利用独立于线程池的预设守护线程进行处理,即将补偿任务加入到预设延迟队列中,通过预设守护线程对队列中的任务进行处理;另外,还可以基于补偿任务的时效性,识别出时效性要求较高的第一补偿任务,通过预设守护线程执行这部分时效性要求高的第一补偿任务,通过线程池执行剩余的第二补偿任务,以便保证时效性要求高,但之前发生执行异常的任务,能够基于该机制更快速的恢复和重试,提高订单履约成功率和效率。
79.步骤205,响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务。
80.步骤206,基于所述预设熔断配置对所述调度任务进行熔断校验。
81.步骤207,在所述调度任务通过熔断校验时,基于所述调度任务的重试数据,确定所述调度任务的重试时间,其中,所述重试数据包括所述调度任务的重试次数和/或上次重试时间;基于所述调度任务的重试时间,对所述调度任务进行处理。
82.在上述实施例中,对于任务库中的落库任务,还可以通过任务调度的方式进行捞取和执行,例如基于定时产生的任务调度触发信号,对任务库中未锁定的落库任务进行捞取,得到调度任务,在执行调度任务之前,还可以根据预先设置的熔断配置对调度任务进行熔断校验,针对特定条件的任务做阻断挂起,若调度任务命中了预设熔断配置,那么直接阻断该任务的执行,而如果通过了熔断校验,那么可以对该任务进行处理。其中,在对调度任务进行处理时,可以先计算调度任务的重试时间,也即预计执行该调度任务的时间,对于任意一个调度任务来说,重试时间具体可以根据该任务的上次重试时间来确定,例如每隔一定的间隔时间重试一次,重试时间也可以根据该任务的上次重试时间和重试次数来确定,例如逐渐拉长下次重试的间隔。
83.在本技术实施例中,可选地,步骤207中“对所述调度任务进行处理”,具体可以包括:
84.步骤207-1,基于所述线程池处理所述调度任务;或者,
85.步骤207-2,将所述调度任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
86.步骤207-3,识别所述调度任务中的第一调度任务,将所述第一调度任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一调度任务,并基于所述线程池处理所述调度任务中的第二调度任务,其中,所述第一调度任务包括对应的时效性满足预设时效条件的任务,所述第二调度任务包括所述调度任务中除所述第一调度任务外的其他任务。
87.在该实施例中,对于调度任务,可以按照与任务库中落库任务同样的处理方式进行处理,即基于线程池处理调度任务;也可以利用独立于线程池的预设守护线程进行处理,即将调度任务加入到预设延迟队列中,通过预设守护线程对队列中的任务进行处理;另外,还可以基于调度任务的时效性,识别出时效性要求较高的第一调度任务,通过预设守护线程执行这部分时效性要求高的第一调度任务,通过线程池执行剩余的第二调度任务,以便保证时效性要求高,但之前发生执行异常的任务,能够基于该机制更快速的恢复和重试,提高订单履约成功率和效率。
88.在本技术实施例提供的一个具体实施例中,如图3所示,完整的任务调度方案包括
四条执行链路:1.新任务提交执行、2.历史任务捞取调度执行、3.后台拉取积压任务批量触发执行、4.应用服务器中快速重试的延迟队列。四条流程链路中,可以共用一个任务处理线程池,且任务对应的服务处理节点也可以是共用的,另外可以对任务各执行结点进行日志打点,记录执行情况。
89.下面针对几条执行链路分表做下描述:
90.1、新任务提交执行。每次外围提交新任务到任务处理框架后,先将任务请求持久化记录在任务库中(如图中1.1所示),然后在落库的任务真正放入线程池异步执行之前,进行服务熔断的判断(如图中1.3所示),如果命中了熔断的配置会直接阻断任务的执行。当任务在线程池异步开始处理,还可以对任务单做锁定控制并发,如果处理成功则任务单正常完结,如果处理异常会把失败的任务单放入到hbase中,基于hbase中的异常任务信息后需可以做任务积压管控和快速恢复。
91.2、任务调度执行。任务调度一般是通过定时扫任务库中的任务单并触发应用系统执行,考虑到扫数据库表及任务执行的开销,这种任务调度方式无法做到快速(秒级),在该方案中,这种触发方式是作为保证任务重试执行直到终态的一种兜底措施。在任务调度执行的过程中,同样可以做熔断校验(如图中2.4),针对长时间重试无法成功的任务还可以记录重试次数,并逐渐拉长下次重试的间隔。当任务被提交到到执行线程池后,后续的流程与“新任务提交执行”的流程可以是一致的。
92.3、后台触发执行异步任务。针对任务处理中发生了异常的任务,会批量插入到hbase中。基于hbase中的异常任务单系统可以直接从后台发起,批量触发这些任务做快速恢复和重试。
93.4、应用服务器中快速重试的延迟队列。因为任务调度存在时效比较慢的问题,因此可以将需要快速重试的任务放入到应用服务本地的一个延迟队列中,并通过守护线程从延迟队列中拉取已经到了可执行时间的任务,并触发执行。
94.本实施例包含一整套的稳定性保障机制,包括:管控(包括任务实时执行情况、积压的待处理任务),服务熔断(针对特定条件的任务执行做阻断挂起),快速重试(可以做到基于本地内存的秒级重试),快速恢复(除了日常服务稳定的情况下,通过任务调度、后台补偿,在面对极端场景,如下游服务不稳定的时候能支持在下游服务恢复后快速恢复)。
95.进一步的,作为图1方法的具体实现,本技术实施例提供了一种任务调度装置,如图4所示,该装置包括:
96.任务落库模块,用于获取待处理任务,将所述待处理任务记录在任务库中;
97.任务处理模块,用于基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;
98.任务调度模块,用于响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。
99.可选地,所述任务调度模块,具体用于:
100.基于所述线程池处理所述调度任务;或者,
101.将所述调度任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
102.识别所述调度任务中的第一调度任务,将所述第一调度任务加入到预设延时队列
中,通过预设守护线程处理所述预设延时队列中的所述第一调度任务,并基于所述线程池处理所述调度任务中的第二调度任务,其中,所述第一调度任务包括对应的时效性满足预设时效条件的任务,所述第二调度任务包括所述调度任务中除所述第一调度任务外的其他任务。
103.可选地,所述任务调度模块,还用于:所述对所述调度任务进行处理之前,基于所述调度任务的重试数据,确定所述调度任务的重试时间,其中,所述重试数据包括所述调度任务的重试次数和/或上次重试时间;基于所述调度任务的重试时间,对所述调度任务进行处理。
104.可选地,所述装置还包括:
105.熔断模块,用于在所述基于线程池处理所述任务库中的落库任务之前,基于预设熔断配置对所述任务库中的落库任务进行熔断校验,并在所述落库任务通过熔断校验时,所述任务处理模块执行所述基于线程池处理所述任务库中的落库任务;
106.相应地,所述装置还包括:
107.熔断模块,还用于在所述对所述调度任务进行处理之前,基于所述预设熔断配置对所述调度任务进行熔断校验,并在所述调度任务通过熔断校验时,所述任务调度模块执行所述对所述调度任务进行处理。
108.可选地,所述装置还包括:
109.任务补偿模块,用于所述基于线程池处理所述任务库中的落库任务之后,若所述落库任务处理失败,则将处理失败的落库任务作为补偿任务存储至预设数据库中;响应于任务补偿信号,捞取所述预设数据库中的所述补偿任务,并对所述补偿任务进行处理。
110.可选地,所述任务补偿模块,具体用于:
111.基于所述线程池处理所述补偿任务;或者,
112.将所述补偿任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,
113.识别所述补偿任务中的第一补偿任务,将所述第一补偿任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一补偿任务,并基于所述线程池处理所述补偿任务中的第二补偿任务,其中,所述第一补偿任务包括对应的时效性满足预设时效条件的任务,所述第二补偿任务包括所述补偿任务中除所述第一补偿任务外的其他任务。
114.可选地,所述装置还包括:
115.任务生成模块,用于所述获取待处理任务之前,接收待处理订单,其中,所述待处理订单的类型包括外卖订单、卡券订单、商品订单中至少一种;依据所述待处理订单,生成所述待处理任务。
116.需要说明的是,本技术实施例提供的一种任务调度装置所涉及各功能单元的其他相应描述,可以参考图1至图2方法中的对应描述,在此不再赘述。
117.基于上述如图1至图2所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图2所示的任务调度方法。
118.基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产
品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
119.基于上述如图1至图2所示的方法,以及图4所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图2所示的任务调度方法。
120.可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
121.本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
122.存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
123.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现获取待处理任务后,将待处理任务记录在任务库中,通过线程池对记录在任务库中的落库任务进行异步处理,并对已处理的落库任务进行锁定,另外,响应于任务调度触发信号,对任务库中未锁定的落库任务进行捞取得到调度任务,并对调度任务进行处理。本技术实施例通过对任务库中未处理过的任务进行捞取和处理,有助于避免任务处理过程中时因异常造成任务无法执行,从而导致任务订单丢失、订单履约时间过长等情况发生,提高了任务执行的可靠性和时效性,进一步提升了用户体验。
124.本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
125.上述本技术序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
技术特征:
1.一种任务调度方法,其特征在于,包括:获取待处理任务,将所述待处理任务记录在任务库中;基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。2.根据权利要求1所述的方法,其特征在于,所述对所述调度任务进行处理,具体包括:基于所述线程池处理所述调度任务;或者,将所述调度任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,识别所述调度任务中的第一调度任务,将所述第一调度任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一调度任务,并基于所述线程池处理所述调度任务中的第二调度任务,其中,所述第一调度任务包括对应的时效性满足预设时效条件的任务,所述第二调度任务包括所述调度任务中除所述第一调度任务外的其他任务。3.根据权利要求2所述的方法,其特征在于,所述对所述调度任务进行处理,具体包括:基于所述调度任务的重试数据,确定所述调度任务的重试时间,其中,所述重试数据包括所述调度任务的重试次数和/或上次重试时间;基于所述调度任务的重试时间,对所述调度任务进行处理。4.根据权利要求2所述的方法,其特征在于,所述基于线程池处理所述任务库中的落库任务之前,所述方法还包括:基于预设熔断配置对所述任务库中的落库任务进行熔断校验,并在所述落库任务通过熔断校验时,执行所述基于线程池处理所述任务库中的落库任务;相应地,所述对所述调度任务进行处理之前,所述方法还包括:基于所述预设熔断配置对所述调度任务进行熔断校验,并在所述调度任务通过熔断校验时,执行所述对所述调度任务进行处理。5.根据权利要求1所述的方法,其特征在于,所述基于线程池处理所述任务库中的落库任务之后,所述方法还包括:若所述落库任务处理失败,则将处理失败的落库任务作为补偿任务存储至预设数据库中;响应于任务补偿信号,捞取所述预设数据库中的所述补偿任务,并对所述补偿任务进行处理。6.根据权利要求5所述的方法,其特征在于,所述对所述补偿任务进行处理,具体包括:基于所述线程池处理所述补偿任务;或者,将所述补偿任务加入到预设延时队列中,并通过预设守护线程处理所述预设延时队列中的任务;或者,识别所述补偿任务中的第一补偿任务,将所述第一补偿任务加入到预设延时队列中,通过预设守护线程处理所述预设延时队列中的所述第一补偿任务,并基于所述线程池处理所述补偿任务中的第二补偿任务,其中,所述第一补偿任务包括对应的时效性满足预设时效条件的任务,所述第二补偿任务包括所述补偿任务中除所述第一补偿任务外的其他任
务。7.根据权利要求1所述的方法,其特征在于,所述获取待处理任务之前,所述方法还包括:接收待处理订单,其中,所述待处理订单的类型包括外卖订单、卡券订单、商品订单中至少一种;依据所述待处理订单,生成所述待处理任务。8.一种任务调度装置,其特征在于,包括:任务落库模块,用于获取待处理任务,将所述待处理任务记录在任务库中;任务处理模块,用于基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;任务调度模块,用于响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。
技术总结
本申请公开了一种任务调度方法及装置、存储介质、计算机设备,该方法包括:获取待处理任务,将所述待处理任务记录在任务库中;基于线程池处理所述任务库中的落库任务,并对已处理的落库任务进行锁定;响应于任务调度触发信号,对所述任务库中未锁定的落库任务进行捞取得到调度任务,并对所述调度任务进行处理。本申请通过对任务库中未处理过的任务进行捞取和处理,有助于避免任务处理过程中时因异常造成任务无法执行,从而导致任务订单丢失、订单履约时间过长等情况发生,提高了任务执行的可靠性和时效性,进一步提升了用户体验。进一步提升了用户体验。进一步提升了用户体验。
技术研发人员:吴惜文 王冠立
受保护的技术使用者:拉扎斯网络科技(上海)有限公司
技术研发日:2022.02.18
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-8538.html