CN117350731A - 一种业务数据处理方法、装置、存储介质及电子装置 - Google Patents
一种业务数据处理方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN117350731A CN117350731A CN202210738228.5A CN202210738228A CN117350731A CN 117350731 A CN117350731 A CN 117350731A CN 202210738228 A CN202210738228 A CN 202210738228A CN 117350731 A CN117350731 A CN 117350731A
- Authority
- CN
- China
- Prior art keywords
- service
- list
- lock
- service entity
- lock list
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 14
- 230000007717 exclusion Effects 0.000 claims abstract description 88
- 238000012545 processing Methods 0.000 claims abstract description 71
- 230000000903 blocking effect Effects 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000004590 computer program Methods 0.000 claims description 16
- 230000002618 waking effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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 Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种业务数据处理方法、装置、存储介质及电子装置,该方法包括:拦截多个业务请求,并为多个业务请求创建多个业务实体锁列表,将多个业务实体锁列表添加到阻塞队列中,并从阻塞队列中获取待处理业务实体锁列表,将待处理业务实体锁列表记录到内部锁列表或互斥表,对内部锁列表内的全部目标业务实体锁列表进行并行处理。通过该方法,可以解决相关技术中将并发控制与业务处理混合在一起,导致业务处理代码很难理解,维护性和扩展性差的问题。
Description
技术领域
本申请实施例涉及业务数据一致性领域,具体而言,涉及一种业务数据处理方法、装置、存储介质及电子装置。
背景技术
业务数据在并发操作时,会产生数据一致性问题。例如银行转账,A账户同时出现两笔转账,A账户初始金额10000元,第一笔是A账户向B账户转账9000元,第二笔是A账户向C账户转账5000元,并发操作流程如下表所示:
A转账B | A转账C | |
步骤1 | 从数据库查询到A账户当前金额10000元 | 从数据库查询到A账户当前金额10000元 |
步骤2 | A账户金额修改为1000元,保存数据库 | A账户金额修改为5000元,保存数据库 |
步骤3 | B账户金额增加9000元,保存数据库 | C账户金额增加5000元,保存数据库 |
账户A最终金额可能是1000元或5000元,结果都是不正确的,这就是并发操作业务数据不一致性问题。
针对并发操作业务数据不一致性问题,现有技术中主要有两大类解决方案,数据库悲观锁和数据库乐观锁:数据库悲观锁是利用数据库提供的锁机制,查询数据时加锁,强迫并发操作顺序执行,保证业务数据一致性;数据库乐观锁是在数据库表中增加一个标识字段,提交时检查是否存在冲突,如果存在冲突则操作失效,重新执行操作。
然而,数据库悲观锁和数据库乐观锁的技术方案中还存在以下缺点:1.实现很复杂,业务处理和并发控制纠缠在一起,业务处理代码很难理解,导致维护性很差;2.完全依赖底层数据库,一旦更换数据库就需要大量修改程序代码,导致扩展性很差;3.数据库悲观锁数据库加锁,容易影响数据库的并发操作性能,且容易造成死锁。
相关技术还使用编程语言自身的锁来解决数据一致性的问题,例如Java语言的并发关键字synchronized,但该方法的缺点是编程语言提供的并发控制机制是通用型的,直接使用效率存在问题,例如在转账方法上增加关键字synchronized会导致其他的账户转账操作均被阻塞,性能很差。
针对相关技术中将并发控制与业务处理混合在一起,导致业务处理代码很难理解,维护性和扩展性差的问题,尚未提出解决方案。
发明内容
本申请实施例提供了一种业务数据处理方法、装置、存储介质及电子装置,以至少解决相关技术中将并发控制与业务处理混合在一起,导致业务处理代码很难理解,维护性和扩展性差的问题。
根据本申请的一个实施例,提供了一种业务数据处理方法,所述方法包括:
拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
根据本申请的又一个实施例,提供了一种业务数据处理装置,所述装置包括:
拦截模块,用于拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
队列模块,用于将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
记录模块,用于将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
并行处理模块,用于对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
根据本申请的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
本申请实施例,拦截多个业务请求,为多个业务请求创建多个业务实体锁列表,通过阻塞队列获取待处理业务实体锁列表,并通过内部锁列表和互斥表进行并发控制,对内部锁列表内的业务实体锁列表进行并行业务处理,从而将实现了并发控制机制与业务处理相分离。通过该方法,可以解决相关技术中将并发控制与业务处理混合在一起,导致业务处理代码很难理解,维护性和扩展性差的问题。
附图说明
图1是本申请实施例的业务数据处理方法的移动终端的硬件结构框图;
图2是本申请实施例的一种业务数据处理方法的流程图;
图3是本申请实施例的业务数据处理方法的整体流程示意图;
图4是本申请实施例的添加业务实体锁列表的流程示意图;
图5是本申请实施例的互斥检查操作的流程示意图;
图6是本申请实施例的释放锁的流程示意图;
图7是本申请实施例的释放业务实体锁列表的流程示意图;
图8是根据本申请实施例的业务数据处理装置的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的业务数据处理方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102,处理器102可以包括但不限于微控制单元(Microcontroller Unit,简称为MCU)或可编程逻辑器件(Field Programmable Gate Array,简称为FPGA)等处理装置和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的业务数据处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及业务链地址池切片处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或网络架构的业务数据处理方法,图2是本申请实施例的一种业务数据处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
步骤S204,将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
步骤S206,将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
步骤S208,对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
本实施例中,上述步骤S202中,可以通过AOP技术拦截业务请求,具体地,可以创建多个AOP代理以在同一时间拦截多个业务请求,客户端的业务操作首先会发送给AOP代理。
本实施例中,上述步骤S202,具体可以包括:分别获取所述多个业务请求中每一条业务数据的业务数据标识;分别根据所述多个业务请求中的全部业务数据标识创建所述业务实体锁列表,得到所述多个业务实体锁列表,其中,所述业务实体锁列表中的每一条业务数据标识对应一个业务实体锁。
具体的,每条业务数据都有其唯一的标识(ID),该业务数据标识可以是字符串、数字或对象。业务实体锁也可以将该业务的唯一标识作为锁。以业务ID为锁时,只有相同的业务ID才会互斥等待,不同的业务ID可以并发执行。
本实施例中,上述步骤S204,具体可以包括:确定所述业务实体锁列表为待处理业务实体锁列表;将所述待处理业务实体锁列表依次添加到阻塞队列中。
具体的,在本实施例中有且仅有一个阻塞队列,且根据阻塞队列的特性,当阻塞队列为满时,无法继续添加业务实体锁列表到阻塞队列中。
本实施例中,在上述步骤S204中,阻塞队列具备先进先出的特性,且当阻塞队列为空时,无法继续从阻塞队列中获取待处理的业务实体锁列表。阻塞队列中除了有从业务拦截点处获取的待处理业务实体锁列表,还可以包括业务处理完成后的待释放业务实体锁列表,需要根据队列的性质依次从阻塞队里中获取待释放业务实体锁列表或待处理业务实体锁列表。
本实施例中,上述步骤S206,具体可以包括:对所述待处理业务实体锁列表与所述内部锁列表进行互斥检查;在检查结果为存在互斥的情况下,将所述待处理业务实体锁列表记录到所述互斥表;在检查结果为不存在互斥的情况下,将所述待处理业务实体锁列表记录到所述内部锁列表。
进一步的,对待处理业务实体锁列表与内部锁列表进行互斥检查,包括:判断所述待处理业务实体锁列表与所述内部锁列表是否存在相同的业务实体锁;在判断结果为是的情况下,确定所述检查结果为存在互斥;在判断结果为否的情况下,确定所述检查结果为不存在互斥。
具体的,根据业务实体锁列表之间的互斥规则进行互斥检查。互斥规则是,两个列表之间只要存在相同的业务实体锁,则认为互斥,相互互斥的业务实体锁列表中只有一个业务实体锁列表能够调用业务处理,其他业务实体锁列表必须等待。例如,业务实体锁列表A={lock1,lock2,lock3},业务实体锁列表B={lock3,lock4,lock5},因为存在相同的业务实体锁lock3,则业务实体锁列表A和B互斥。
本实施例中,上述步骤S208,具体可以包括:唤醒所述全部目标业务实体锁列表中每个业务实体锁对应的业务处理线程;通过所述业务处理线程处理对应的业务数据并返回业务处理结果。
具体的,由于内部锁列表内的各个业务实体锁列表都不存在互斥,可以并行处理内部锁列表中各个业务实体锁列表对应的业务请求,即在步骤S208之前进行并发控制,在步骤S208中只进行业务处理,从而实现并发控制与业务处理的分离,提高并发控制的性能与业务处理的效率。
在另一实施例中,在上述步骤S208之后,所述方法还包括:为已处理完成的多个目标业务实体锁列表分别创建对应的待释放业务实体锁列表;将所述多个待释放业务实体锁列表添加到所述阻塞队列中。
具体的,阻塞队列中既有待释放业务实体锁列表,也有待处理业务实体锁列表,需要根据阻塞队列的特性依次添加进阻塞队列中,并依次从阻塞队列中获取。两种列表共用同一个阻塞队里,从而保证了并发控制的处理逻辑。待释放业务实体锁列表可以用来释放内部锁列表中已处理完成的业务实体锁列表,也可以用于触发对互斥表中的业务实体锁列表重新进行互斥检查。
进一步的,在上述步骤S208之后,所述方法还包括:从所述阻塞队列中获取所述待释放业务实体锁列表;删除所述内部锁列表中与所述待释放业务实体锁列表对应的目标业务实体锁列表,得到更新后的内部锁列表;对所述互斥表中每个业务实体锁列表与所述更新后的内部锁列表进行互斥检查,以确定是否存在互斥;将所述互斥表中的不存在互斥的业务实体锁列表记录到所述更新后的内部锁列表中,并从所述互斥表中删除。
具体的,对互斥表中业务实体锁列表进行互斥检查的具体操作与对待处理实体锁列表进行互斥检查的操作类似。
通过上述步骤S202至S208,可以实现将并发控制机制与业务处理相分离,在进行业务处理时,只需要考虑业务本身,提高了业务处理的效率与并发控制的性能。本实施例通过创建业务实体锁列表,仅根据互斥表和内部锁列表就能实现并发控制,不需要依赖具体的数据库,也不需要依赖于具体的某个产品,具备更高的可扩展性。
根据本发明另一实施例提供的一种业务数据处理流程,所述流程具体包括以下步骤:
步骤S1,通过编程语言定义业务实体锁,以业务数据的唯一标识(ID)作为锁互斥的判断依据;
步骤S2,利用AOP技术,创建业务流程拦截点,实现业务实体锁的接入;
步骤S3,在AOP拦截点里,利用业务操作的业务数据的ID,创建业务实体锁列表;
步骤S4,在AOP拦截点里,把业务实体锁列表传递给锁管理器,业务操作线程进入等待状态;
步骤S5,锁管理器线程利用锁管理表判断是否存在互斥,如果不存在互斥,则把业务实体锁列表记录进内部锁列表,并唤醒等待的业务线程执行业务操作;如果存在互斥,则把业务实体锁列表记录进互斥表;
步骤S6,业务线程执行完业务操作,AOP拦截器会获取到业务执行结束通知,然后通知锁管理器释放业务实体锁列表;
步骤S7,锁管理器删除锁管理表中记录的业务实体锁列表;
步骤S8,锁管理器根据互斥表,进行互斥等待的业务线程的唤醒。
在本实施例中,在步骤S3中,如果拦截的业务数据有N条,则创建一个包含N条业务实体锁的列表,如果有多个AOP拦截点,就创建多个业务实体锁的列表。
在本实施例中,步骤S4中的锁管理器用于控制业务实体锁,可作为并发控制的接口,锁管理器模块包括阻塞队列、互斥表、内部锁列表,通过锁管理器可以对阻塞队列、互斥表、内部锁列表执行操作。
在本实施例中,在步骤S6中,AOP代理与每一个业务实体锁列表都有一一对应的关系,AOP代理能够感知其代理的业务实体锁列表互斥的进程结束。
在本实施例中,通过上述步骤S1至步骤S8,利用业务实体锁进行并发控制,获得更好的并发性能,通过AOP拦截,把业务请求转化为业务实体锁列表,直接交给锁管理器进行锁的控制,实现了业务控制与并发控制分离,获得更好的可维护性和可扩展性。
图3是本申请实施例的业务数据处理方法的整体流程示意图,采用统一建模语言(Unified Modeling Language,简称为UML)的时序图描述,如图3所示,该业务数据处理流程主要经过以下节点:客户端302,AOP代理304,锁管理器306,业务类308。
在本实施例中,客户端302是一种抽象,代表对业务操作的调用者。
在本实施例中,AOP代理304是现有的面向切面编程(Aspect OrientedProgramming,简称为AOP)技术,代表对业务操作的拦截,客户端的业务操作首先发送给AOP代理。AOP代理会根据业务请求数据生成业务实体锁列表,并采用异步调用方式把业务锁列表添加进锁管理器,然后利用编程语言或操作系统提供的同步等待机制在业务锁列表上执行阻塞等待。
在本实施例中,锁管理器306拥有一个独立的处理线程,负责锁互斥管理操作,如果发现锁列表不存在互斥则利用编程语言或操作系统提供的并发控制机制,对AOP代理进行唤醒操作。锁管理器的具体实现细节在后面描述。
在本实施例中,AOP代理调用业务类308进行具体的业务处理。业务处理结束后,AOP代理异步调用锁管理器释放业务实体锁列表,并把业务处理结果返回给客户端。
在本实施例中,锁管理器收到释放锁的异步请求后,由锁管理器的独立处理线程完成锁的释放,并唤醒不互斥的阻塞等待中的AOP代理。
图4是本申请实施例的添加业务实体锁列表的流程示意图,采用UML的时序图描述,如图4所示,添加业务实体锁列表的流程包括以下步骤:
步骤S401,AOP代理添加业务实体锁列表到锁管理器;
步骤S402,锁管理器添加业务实体锁列表到阻塞队列;
步骤S403,锁管理器任务线程从阻塞队列中获取业务实体锁列表;
步骤S404,锁管理器任务线程根据锁管理表检查业务实体锁列表是否互斥;
步骤S405,根据互斥检查结果在锁管理表内部执行锁记录操作。
在本实施例中,在步骤S405之后,所述流程还包括:
步骤S406,返回检查结果;
步骤S407,唤醒阻塞等待的AOP代理。
在本实施例中,阻塞队列是一种通用技术,利用阻塞队列实现添加业务实体锁列表的异步操作。锁管理器拥有一个独立的任务线程,负责从阻塞队列中获取要处理的业务实体列表,调用锁管理表判断是否存在互斥,如果不互斥,则调用编程语言或操作系统提供的同步机制对阻塞等待的AOP代理进行唤醒。
图5是本申请实施例的互斥检查操作的流程示意图,采用UML的时序图描述,如图5所示,互斥检查操作的流程包括以下步骤:
步骤S501,由锁管理器任务线程发起互斥检测,循环执行步骤S502至S504以检查业务实体锁列表;
步骤S502,根据内部锁列表循环检查业务锁列表内的业务实体锁是否存在;
当判断结果为存在,执行步骤S503和S504。
步骤S503,在判断结果为存在的情况下,记录互斥情况到互斥表;
步骤S504,记录检查结果为互斥;
在循环结束后,若检查结果为不互斥,执行步骤S505。
步骤S505,添加业务实体锁列表到内部锁列表中。
步骤S506,返回检查结果。
在本实施例中,内部锁列表是一个记录当前所有正在执行的业务实体锁的列表。锁管理器调用内部锁列表检查业务锁是否存在,如果存在,则表示存在互斥的业务操作,则在互斥表中记录互斥情况,并标记检查结果为互斥。如果完全不存在互斥,则将业务实体锁列表记录进内部锁列表。
图6是本申请实施例的释放锁的流程示意图,采用UML的时序图描述,如图6所示,释放锁的流程包括以下步骤:
步骤S601,AOP代理向锁管理器发送释放锁信号;
步骤S602,锁管理器添加要释放的业务实体锁列表到阻塞队列;
步骤S603,锁管理器任务线程从阻塞队列中获取要释放的业务实体锁列表;
步骤S604,锁管理器任务线程向锁管理表发送释放业务实体锁列表。
具体的,AOP代理可以在所代理的业务实体锁列表中
在本实施例中,AOP代理在具体的业务操作结束后,异步调用锁管理的释放锁。
锁管理器把要释放的业务实体锁列表插入阻塞队列,锁管理器任务管理线程调用锁管理器释放业务实体锁列表。
图7是本申请实施例的释放业务实体锁列表的流程示意图,采用UML的时序图描述,如图7所示,释放业务实体锁列表的流程包括以下步骤:
步骤S701,同上述步骤S604,锁管理器任务线程向锁管理表发送释放业务实体锁列表;
步骤S702,锁管理列表调用内部锁列表删除记录的业务实体锁列表;
步骤S703,查询互斥表中等待的业务实体锁列表;
步骤S704,循环判断每一个等待的业务实体锁列表是否有其他互斥的业务实体锁列表,在没有其他互斥等待的情况,唤醒该等待的业务实体锁列表;
步骤S705,将唤醒的业务实体锁列表从互斥表中删除。
在本实施例中,锁管理列表根据释放业务实体锁列表查询到互斥等待它的所有其他业务实体锁列表,循环判断等待的业务实体锁列表是否有其他的互斥等待,如果没有,则唤醒等待的AOP代理。AOP代理被唤醒后调用业务处理线程执行业务处理。
根据本申请实施例的另一方面,还提供了一种业务数据处理装置,图8是根据本申请实施例的业务数据处理装置的框图,如图8所示,所述装置包括:
拦截模块802,用于拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
队列模块804,用于将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
记录模块806,用于将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
并行处理模块808,用于对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
在本实施例中,拦截模块802,还用于分别获取所述多个业务请求中每一条业务数据的业务数据标识;分别根据所述多个业务请求中的全部业务数据标识创建所述业务实体锁列表,得到所述多个业务实体锁列表,其中,所述业务实体锁列表中的每一条业务数据标识对应一个业务实体锁。
在本实施例中,队列模块804,还用于确定所述业务实体锁列表为待处理业务实体锁列表;将所述待处理业务实体锁列表依次添加到阻塞队列中。
在本实施例中,记录模块806还包括:
互斥检查模块,用于对所述待处理业务实体锁列表与所述内部锁列表进行互斥检查;
第一记录子模块,用于在检查结果为存在互斥的情况下,将所述待处理业务实体锁列表记录到所述互斥表;
第二记录子模块,用于在检查结果为不存在互斥的情况下,将所述待处理业务实体锁列表记录到所述内部锁列表。
在本实施例中,互斥检查模块,还用于判断所述待处理业务实体锁列表与所述内部锁列表是否存在相同的业务实体锁;在判断结果为是的情况下,确定所述检查结果为存在互斥;在判断结果为否的情况下,确定所述检查结果为不存在互斥。
在本实施例中,并行处理模块808,还用于唤醒所述全部目标业务实体锁列表中每个业务实体锁对应的业务处理线程;通过所述业务处理线程处理对应的业务数据并返回业务处理结果。
在本实施例中,队列模块804,还用于为已处理完成的多个目标业务实体锁列表分别创建对应的待释放业务实体锁列表;
在本实施例中,队列模块804,还用于将所述多个待释放业务实体锁列表添加到所述阻塞队列中。
在本实施例中,所述装置还包括:
释放模块,用于从所述阻塞队列中获取所述待释放业务实体锁列表;删除所述内部锁列表中与所述待释放业务实体锁列表对应的目标业务实体锁列表,得到更新后的内部锁列表;
在本实施例中,互斥检查模块,还用于对所述互斥表中每个业务实体锁列表与所述更新后的内部锁列表进行互斥检查,以确定是否存在互斥;
在本实施例中,第二记录子模块,还用于将所述互斥表中的不存在互斥的业务实体锁列表记录到所述更新后的内部锁列表中,并从所述互斥表中删除。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种业务数据处理方法,其特征在于,所述方法包括:
拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
2.根据权利要求1所述的方法,其特征在于,为所述多个业务请求创建多个业务实体锁列表,包括:
分别获取所述多个业务请求中每一条业务数据的业务数据标识;
分别根据所述多个业务请求中的全部业务数据标识创建所述业务实体锁列表,得到所述多个业务实体锁列表,其中,所述业务实体锁列表中的每一条业务数据标识对应一个业务实体锁。
3.根据权利要求1所述的方法,其特征在于,将所述多个业务实体锁列表添加到阻塞队列中,包括:
确定所述业务实体锁列表为待处理业务实体锁列表;
将所述待处理业务实体锁列表依次添加到阻塞队列中。
4.根据权利要求1所述的方法,其特征在于,将所述待处理业务实体锁列表记录到内部锁列表或互斥表,包括:
对所述待处理业务实体锁列表与所述内部锁列表进行互斥检查;
在检查结果为存在互斥的情况下,将所述待处理业务实体锁列表记录到所述互斥表;
在检查结果为不存在互斥的情况下,将所述待处理业务实体锁列表记录到所述内部锁列表。
5.根据权利要求3所述的方法,其特征在于,对所述待处理业务实体锁列表与所述内部锁列表进行互斥检查,包括:
判断所述待处理业务实体锁列表与所述内部锁列表是否存在相同的业务实体锁;
在判断结果为是的情况下,确定所述检查结果为存在互斥;
在判断结果为否的情况下,确定所述检查结果为不存在互斥。
6.根据权利要求1所述的方法,其特征在于,对所述内部锁列表内的全部目标业务实体锁列表进行并行处理,包括:
唤醒所述全部目标业务实体锁列表中每个业务实体锁对应的业务处理线程;
通过所述业务处理线程处理对应的业务数据并返回业务处理结果。
7.根据权利要求1所述的方法,其特征在于,在对所述内部锁列表内的全部目标业务实体锁列表进行并行处理之后,所述方法还包括:
为已处理完成的多个目标业务实体锁列表分别创建对应的待释放业务实体锁列表;
将所述多个待释放业务实体锁列表添加到所述阻塞队列中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
从所述阻塞队列中获取所述待释放业务实体锁列表;
删除所述内部锁列表中与所述待释放业务实体锁列表对应的目标业务实体锁列表,得到更新后的内部锁列表;
对所述互斥表中每个业务实体锁列表与所述更新后的内部锁列表进行互斥检查,以确定是否存在互斥;
将所述互斥表中的不存在互斥的业务实体锁列表记录到所述更新后的内部锁列表中,并从所述互斥表中删除。
9.一种业务数据处理装置,其特征在于,所述装置包括:
拦截模块,用于拦截多个业务请求,并为所述多个业务请求创建多个业务实体锁列表,其中,每个业务请求对应一个业务实体锁列表,每个业务实体锁列表包括多个业务实体锁,所述业务实体锁用于控制业务处理线程;
队列模块,用于将所述多个业务实体锁列表添加到阻塞队列中,并从所述阻塞队列中获取待处理业务实体锁列表;
记录模块,用于将所述待处理业务实体锁列表记录到内部锁列表或互斥表,其中,所述内部锁列表用于记录当前正在执行的目标业务实体锁列表,所述互斥表用于记录与所述目标业务实体锁列表互斥的业务实体锁列表,所述内部锁列表和所述互斥表中包含一个或多个所述业务实体锁列表;
并行处理模块,用于对所述内部锁列表内的全部目标业务实体锁列表进行并行处理。
10.一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器运行时执行所述权利要求1至9任一项中所述的方法。
11.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至9任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210738228.5A CN117350731A (zh) | 2022-06-27 | 2022-06-27 | 一种业务数据处理方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210738228.5A CN117350731A (zh) | 2022-06-27 | 2022-06-27 | 一种业务数据处理方法、装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117350731A true CN117350731A (zh) | 2024-01-05 |
Family
ID=89359946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210738228.5A Pending CN117350731A (zh) | 2022-06-27 | 2022-06-27 | 一种业务数据处理方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117350731A (zh) |
-
2022
- 2022-06-27 CN CN202210738228.5A patent/CN117350731A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688500B (zh) | 一种分布式任务处理方法、装置、系统及设备 | |
US7702741B2 (en) | Configuring or reconfiguring a multi-master information sharing environment | |
EP3791276A1 (en) | Merging conflict resolution for multi-master distributed databases | |
CN101188566B (zh) | 一种集群环境下数据缓存同步的方法及系统 | |
WO2018001135A1 (zh) | 处理数据库事务的方法、客户端和服务器 | |
CN104050276A (zh) | 一种分布式数据库的缓存处理方法及系统 | |
CN112685499B (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN110457059A (zh) | 一种基于redis的序列号生成方法及装置 | |
CN112084206A (zh) | 数据库的事务请求处理方法、相关设备及存储介质 | |
CN108139927B (zh) | 联机事务处理系统中事务的基于动作的路由 | |
CN103064898B (zh) | 事务加锁、解锁方法及装置 | |
CN113127564A (zh) | 一种参数同步方法和装置 | |
CN113885780A (zh) | 数据同步方法、装置、电子设备、系统和存储介质 | |
JP7322161B2 (ja) | 分散システムにおける非同期ストレージ管理 | |
CN104391876A (zh) | 一种静态数据存储及查询方法及系统 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
CN112306695A (zh) | 数据的处理方法、装置、电子设备及计算机存储介质 | |
CN111143040A (zh) | 事务处理方法、装置、系统及存储介质 | |
CN117350731A (zh) | 一种业务数据处理方法、装置、存储介质及电子装置 | |
CN112732453B (zh) | 跨线程消息处理方法、装置、系统和计算机可读存储介质 | |
CN114281476A (zh) | Kubernetes云原生集群资源删除保护方法、装置、设备及存储介质 | |
CN112100186A (zh) | 基于分布式系统的数据处理方法、装置、计算机设备 | |
CN112685142A (zh) | 分布式数据处理系统 | |
US8838910B2 (en) | Multi-part aggregated variable in structured external storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |