一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种批量任务处理方法及装置与流程

2022-04-27 12:16:37 来源:中国专利 TAG:


1.本技术涉及数据处理领域,特别是涉及一种批量任务处理方法及装置。


背景技术:

2.服务器可以通过批量方式或者联机方式处理用户上送的请求。其中,服务器在通过批量方式处理请求的同时,有可能还需要采用联机方式处理其它请求。
3.如何既满足联机方式的高并发处理需求、又保证批量方式的稳定性,是目前急需解决的问题。


技术实现要素:

4.本技术所要解决的技术问题是如何既满足联机方式的高并发处理需求、又保证批量方式的稳定性,提供一种批量任务处理方法及装置。
5.第一方面,本技术实施例提供了一种批量任务处理方法,所述方法包括:
6.采用乐观锁对第一批量任务集合中的任务进行处理;
7.再次采用所述乐观锁对第二批量任务集合中的任务进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务;
8.采用悲观锁对第三批量任务集合中的任务进行处理,所述第三批量集合中的任务,为所述第二批量任务集合中处理失败的任务。
9.可选的,第一任务为所述第一批量任务集合或者所述第二批量任务集合中的任意一个任务,采用乐观锁对所述第一任务进行处理,包括:
10.在数据读取阶段,读取所述第一任务的关键信息;
11.在数据处理阶段,基于所述第一任务的关键信息获得所述第一任务的业务数据,并对所述第一任务的业务数据进行处理,得到第一处理结果;
12.在数据写入阶段,对所述第一任务的业务数据进行冲突校验,并在所述第一任务的业务数据不存在冲突的情况下,写入所述第一处理结果。
13.可选的,所述方法还包括:
14.若在数据写入阶段确定所述第一任务的业务数据存在冲突,则为所述第一任务添加标记,所述标记用于指示所述第一任务执行失败。
15.可选的,所述第三批量任务集合中包括第二任务,采用悲观锁对所述第二任务进行处理,包括:
16.在数据读取阶段,读取所述第二任务的关键信息;
17.在数据处理阶段,基于所述第二任务的关键信息获得所述第二任务的业务数据,并对所述第二任务的业务数据进行加锁,以及对所述第二任务的业务数据进行处理,得到第二处理结果;
18.在数据写入阶段,写入所述第二处理结果,并对所述第二任务的业务数据进行解锁。
19.可选的,所述第三批量任务集合中的任务,指的是采用乐观锁处理n次且每次均失败的任务,n为大于或者等于2的整数。
20.第二方面,本技术实施例提供了一种批量任务处理装置,所述装置包括:
21.第一处理单元,用于采用乐观锁对第一批量任务集合中的任务进行处理;
22.第二处理单元,用于再次采用所述乐观锁对第二批量任务集合中的任务进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务;
23.第三处理单元,用于采用悲观锁对第三批量任务集合中的任务进行处理,所述第三批量集合中的任务,为所述第二批量任务集合中处理失败的任务。
24.可选的,第一任务为所述第一批量任务集合或者所述第二批量任务集合中的任意一个任务,采用乐观锁对所述第一任务进行处理,包括:
25.在数据读取阶段,读取所述第一任务的关键信息;
26.在数据处理阶段,基于所述第一任务的关键信息获得所述第一任务的业务数据,并对所述第一任务的业务数据进行处理,得到第一处理结果;
27.在数据写入阶段,对所述第一任务的业务数据进行冲突校验,并在所述第一任务的业务数据不存在冲突的情况下,写入所述第一处理结果。
28.可选的,所述装置还包括:
29.标记添加单元,用于若在数据写入阶段确定所述第一任务的业务数据存在冲突,则为所述第一任务添加标记,所述标记用于指示所述第一任务执行失败。
30.可选的,所述第三批量任务集合中包括第二任务,采用悲观锁对所述第二任务进行处理,包括:
31.在数据读取阶段,读取所述第二任务的关键信息;
32.在数据处理阶段,基于所述第二任务的关键信息获得所述第二任务的业务数据,并对所述第二任务的业务数据进行加锁,以及对所述第二任务的业务数据进行处理,得到第二处理结果;
33.在数据写入阶段,写入所述第二处理结果,并对所述第二任务的业务数据进行解锁。
34.可选的,所述第三批量任务集合中的任务,指的是采用乐观锁处理n次且每次均失败的任务,n为大于或者等于2的整数。
35.第三方面,本技术实施例提供了一种设备,所述设备包括:处理器、存储器、系统总线;所述设备以及所述存储器通过所述系统总线相连;所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行以上第一方面所述的方法。
36.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行以上第一方面所述的方法。
37.与现有技术相比,本技术实施例具有以下优点:
38.本技术实施例提供了一种批量任务处理方法,在该方法中,首先可以利用乐观锁对第一批量任务集合中的任务进行处理。采用乐观锁对第一批量任务集合中的任务进行处理,可以保证联机任务的高并发。而后,再次采用所述乐观锁对第二批量任务集合中的任务
进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务。对于所述第二批量任务集合中处理失败的任务,采用悲观锁进行处理,从而保证批量任务成功执行,以保证批量任务的稳定性。由此可见,利用本方案,能够既满足联机方式的高并发处理需求、又保证批量方式的稳定性。
附图说明
39.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1为本技术实施例提供的一种批量任务处理方法的流程示意图;
41.图2为本技术实施例提供的一种批量任务处理装置的结构示意图。
具体实施方式
42.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.本技术的发明人经过研究发现,服务器在通过批量方式处理请求的同时,有可能还需要采用联机方式处理其它请求。而采用批量方式处理请求和采用联机方式处理请求,其可能需要抢占数据库中的存储的数据资源。为了避免数据冲突,采用批量方式处理请求时,可以采用悲观锁或者乐观锁来进行处理。为方便描述,将“采用批量方式处理的请求”称为“批量任务”,将“采用联机方式处理的请求”称为“联机任务”。
44.接下来对悲观锁和乐观锁进行简单介绍。
45.悲观锁:在数据读取阶段就对数据加锁,防止批量任务处理期间数据被联机任务篡改。采用悲观锁处理批量任务,可以最大程度保证批量任务的稳定性,但由于批量任务处理期间联机任务被阻塞(数据被加锁,无法修改),因次会对联机任务的性能造成影响。
46.乐观锁:在数据进行提交更新的时候,对数据进行冲突检测。通常在数据库表结构设计上冗余一个字段用于记录当前版本号。当发生乐观锁异常的时候需要加入自动重试机制。当存在大量资源抢占的时候,可能引起频繁的乐观锁异常导致批量任务执行失败。即:当存在大量资源抢占的时候,批量任务的成功率不稳定。
47.为了解决上述问题,本技术实施例提供了一种批量任务处理方法及装置,能够既满足联机方式的高并发处理需求、又保证批量方式的稳定性。
48.下面结合附图,详细说明本技术的各种非限制性实施方式。
49.示例性方法
50.参见图1,该图为本技术实施例提供的一种批量任务处理方法的流程示意图。在本实施例中,所述方法可以由服务器执行。所述方法例如可以包括以下步骤:s101-s103。
51.s101:采用乐观锁对第一批量任务集合中的任务进行处理。
52.第一批量任务集合中包括多个任务。接下来,以第一批量集合中的第一任务为例,
介绍s101的具体实现方式。
53.在本技术实施例中,可以将处理第一任务的过程分成3个阶段,分别为:数据读取(read)阶段、数据处理(process)阶段和数据写入(write)阶段。
54.对于这种情况,可以增加读缓冲区实现读写分离,并实现流水线执行,从而提升处理前述多个任务的效率。
55.在数据读取阶段:可以读取所述第一任务的关键信息,此处提及的第一任务的关键信息,可以是第一任务的标识。
56.在数据处理阶段:基于所述第一任务的关键信息获得所述第一任务的业务数据,并对所述第一任务的业务数据进行处理,得到第一处理结果。
57.在一个示例中,可以以所述第一任务的关键信息为索引,查找到所述第一任务的业务数据。而后,对所述第一任务的业务数据进行处理,得到第一处理结果。关于对所述第一任务的业务数据进行处理的具体方式,此处不做限定,具体根据所述第一任务对应的业务相关。此处提及的业务,可以是银行系统中的任一任务,例如,扣款任务、利息结算业务等,此处不做限定。
58.在数据写入阶段:对所述第一任务的业务数据进行冲突校验,并在所述第一任务的业务数据不存在冲突的情况下,写入所述第一处理结果。其中,对所述第一任务的业务数据进行冲突校验,指的是校验所述第一任务的业务数据在所述第一任务的处理过程中是否发生了改变。若所述第一任务的业务数据在所述第一任务的处理过程中发生了改变,则说明所述第一任务的业务数据存在冲突。若所述第一任务的业务数据在所述第一任务的处理过程中未发生了改变,则说明所述第一任务的业务数据不存在冲突。
59.在本技术实施例中,若所述第一任务的业务数据不存在冲突,则第一任务处理成功,此时可以写入所述第一处理结果。
60.在本技术实施例中,若所述第一任务的业务数据存在冲突,则可以为所述第一任务添加标记,所述标记用于指示第一任务执行失败。在后续阶段,需要重新执行第一任务。
61.s102:再次采用所述乐观锁对第二批量任务集合中的任务进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务。
62.在本技术实施例中,执行s101之后,所有未执行成功的任务被添加了标记。因此,可以基于所述标记确定需要重新执行的任务,即根据所述标记,可以确定所述第二批量任务集合。
63.关于采用乐观锁对第二批量任务集合中的任务进行处理的方式,与采用乐观锁对第一批量任务集合中的任务进行处理的方式相同,故而相关描述可以参考s101中的相关描述部分,此处不再重复描述。
64.在一个示例中,对于所述第二批量任务集合中的每个任务,可以为其设置一个重新执行的次数上限,例如,设置次数上限m,则对于第二批量任务集合中的某一任务,若采用乐观锁对该任务处理m次且每次均失败,则不再采用乐观锁对该任务进行处理。其中,m为大于或者等于1的整数。换言之,在一个示例中,所述第三批量任务集合中的任务,指的是采用乐观锁处理n次且每次均失败的任务,n为大于或者等于2的整数,此处提及的n等于(m 1),因为,在执行s101时,所述第二批量任务集合中的任务也采用乐观锁被处理了一次。
65.在一个示例中,可以对第二批量任务中采用乐观锁执行m次且每次均失败的任务,
添加标记。这样一来,即可根据该标记,确定需要利用悲观锁执行的任务,即根据所述标记,可以确定所述第三批量任务集合。
66.s103:采用悲观锁对第三批量任务集合中的任务进行处理,所述第三批量集合中的任务,为所述第二批量任务集合中处理失败的任务。
67.第三批量任务集合中包括至少一个任务。接下来,以第三批量集合中的第二任务为例,介绍s103的具体实现方式。
68.在本技术实施例中,可以将处理第一任务的过程分成3个阶段,分别为:数据读取(read)阶段、数据处理(process)阶段和数据写入(write)阶段。
69.在数据读取阶段,读取所述第二任务的关键信息,此处提及的第二任务的关键信息,可以是第二任务的标识。
70.在数据处理阶段,基于所述第二任务的关键信息获得所述第二任务的业务数据,并对所述第二任务的业务数据进行加锁,以及对所述第二任务的业务数据进行处理,得到第二处理结果。
71.在一个示例中,可以以所述第二任务的关键信息为索引,查找到所述第二任务的业务数据。而后,对所述第二任务的业务数据进行加锁,从而避免所述第二任务的业务数据被修改。进一步地,对所述第二任务的业务数据进行处理,得到第二处理结果。
72.关于对所述第二任务的业务数据进行处理的具体方式,此处不做限定,具体根据所述第二任务对应的业务相关。此处提及的业务,可以是银行系统中的任一任务,例如,扣款任务、利息结算业务等,此处不做限定。
73.在数据写入阶段,写入所述第二处理结果,并对所述第二任务的业务数据进行解锁。
74.对所述第二任务的业务数据进行解锁之后,则所述第二任务的业务数据则可以被修改。
75.在本方案中,采用悲观锁处理第三批量任务集合中的任务时,可以将悲观锁的粒度控制在单个任务(可以对应数据库中的一行数据)。而不是同时对多行数据进行加锁,并且等待该多行数据均处理完成之后再一并解锁。这样一来,在采用悲观锁对某一行数据进行加锁时,其它数据均可以由于执行联机任务而被修改,从而提升联机任务的执行性能。
76.通过以上描述可知,本技术实施例提供的批量任务处理方法,首先可以利用乐观锁对第一批量任务集合中的任务进行处理。采用乐观锁对第一批量任务集合中的任务进行处理,可以保证联机任务的高并发。而后,再次采用所述乐观锁对第二批量任务集合中的任务进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务。对于所述第二批量任务集合中处理失败的任务,采用悲观锁进行处理,从而保证批量任务成功执行,以保证批量任务的稳定性。由此可见,利用本方案,能够既满足联机方式的高并发处理需求、又保证批量方式的稳定性。
77.示例性设备
78.基于以上实施例提供的方法,本技术实施例还提供了一种装置,以下结合附图介绍该装置。
79.参见图2,该图为本技术实施例提供的一种批量任务处理装置的结构示意图。所述装置200例如可以具体包括:第一处理单元201、第二处理单元202和第三处理单元203。
80.第一处理单元201,用于采用乐观锁对第一批量任务集合中的任务进行处理;
81.第二处理单元202,用于再次采用所述乐观锁对第二批量任务集合中的任务进行处理,所述第二批量集合中的任务,为所述第一批量任务集合中处理失败的任务;
82.第三处理单元203,用于采用悲观锁对第三批量任务集合中的任务进行处理,所述第三批量集合中的任务,为所述第二批量任务集合中处理失败的任务。
83.可选的,第一任务为所述第一批量任务集合或者所述第二批量任务集合中的任意一个任务,采用乐观锁对所述第一任务进行处理,包括:
84.在数据读取阶段,读取所述第一任务的关键信息;
85.在数据处理阶段,基于所述第一任务的关键信息获得所述第一任务的业务数据,并对所述第一任务的业务数据进行处理,得到第一处理结果;
86.在数据写入阶段,对所述第一任务的业务数据进行冲突校验,并在所述第一任务的业务数据不存在冲突的情况下,写入所述第一处理结果。
87.可选的,所述装置还包括:
88.标记添加单元,用于若在数据写入阶段确定所述第一任务的业务数据存在冲突,则为所述第一任务添加标记,所述标记用于指示所述第一任务执行失败。
89.可选的,所述第三批量任务集合中包括第二任务,采用悲观锁对所述第二任务进行处理,包括:
90.在数据读取阶段,读取所述第二任务的关键信息;
91.在数据处理阶段,基于所述第二任务的关键信息获得所述第二任务的业务数据,并对所述第二任务的业务数据进行加锁,以及对所述第二任务的业务数据进行处理,得到第二处理结果;
92.在数据写入阶段,写入所述第二处理结果,并对所述第二任务的业务数据进行解锁。
93.可选的,所述第三批量任务集合中的任务,指的是采用乐观锁处理n次且每次均失败的任务,n为大于或者等于2的整数。
94.由于所述装置200是与以上方法实施例提供的方法对应的装置,所述装置200的各个单元的具体实现,均与以上方法实施例为同一构思,因此,关于所述装置200的各个单元的具体实现,可以参考以上方法实施例的描述部分,此处不再赘述。
95.本技术实施例提供了一种设备,所述设备包括:处理器、存储器、系统总线;所述设备以及所述存储器通过所述系统总线相连;所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行以上方法实施例所述的方法。
96.本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行以上方法实施例所述的方法。
97.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的
权利要求指出。
98.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
99.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献