CN103677771A - 一种并发事务的处理方法和装置 - Google Patents
一种并发事务的处理方法和装置 Download PDFInfo
- Publication number
- CN103677771A CN103677771A CN201210328626.6A CN201210328626A CN103677771A CN 103677771 A CN103677771 A CN 103677771A CN 201210328626 A CN201210328626 A CN 201210328626A CN 103677771 A CN103677771 A CN 103677771A
- Authority
- CN
- China
- Prior art keywords
- data processing
- affairs
- group
- child
- concurrent
- 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.)
- Granted
Links
Images
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请提供了一种并发事务的处理方法和装置。所述方法包括:接收客户端提交的多个事务;将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。本申请可以提高并发事务的处理效率。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种并发事务的方法和装置。
背景技术
网络热点数据是指在在当前业务系统中,一定的时间内访问频率较高的数据。例如,在支付账户中,所有账户会员的账户余额值中,大商户中的账户余额由于经常被访问成为热点数据;积分账户中的当前剩余额度数据也是热点数据。
业务系统中,常常出现多个事务需要同时操作数据库内同一条热点数据的情况,例如:对同一个卖家同时有多笔帐务的写操作。当同一条热点数据被多个并发事务请求操作时,当某些操作需要撤销或是回滚时,只能通过修改数据的方式进行,当多个操作对同一个数据进行修改时,容易造成数据在事务之间被覆盖,即脏写。因此,必须在多个事务之间存在一种协调机制,防止事务之间的冲突,保证数据一致性及完整性。
现有技术中,针对热点数据的高并发事务,可以通过读写锁的方式来解决。
读写锁机制是通过读写锁控制多个事务按顺序执行,多个并发事务在数据库内抢锁,获得读写锁的事务将账户锁定,余额数据只受当前正在处理的事务的影响,该事务处理完成后,释放读写锁,抢到锁的事务再对该账户进行处理,因此,可以严格保证数据的一致性和完整性。
以上现有技术中存在的问题是:读写锁方式中,由于一个事务,从读取数据,业务演算,更新数据,整个环节可能耗时很长,在复杂的业务场景,单个事务处理甚至达到秒级的时间量。顺序执行使得业务处理吞吐量受到严重制约,在大并发量情况下,处理事务的性能存在严重瓶颈,无法满足日常处理需求。
因此,目前需要本领域技术人员解决的一个技术问题就是,提供一种并发事务的处理机制,以提高并发事务的处理效率。
发明内容
本申请所要解决的技术问题是提供一种并发事务的处理方法,以提高并发事务的处理效率。
本申请还提供了一种并发事务的处理装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本申请公开了一种并发事务的处理方法,包括:
接收客户端提交的多个事务;
将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
优选的,针对各个事务,所述将每个事务,拆分为多个针对单个账户的数据处理子操作的步骤并发执行。
优选的,各个数据处理组的回滚操作与不同数据处理组的数据处理子操作或回滚操作并发执行。
优选的,所述方法还包括:
在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件;
若不符合,则执行所述数据处理组中各个数据处理子操作的回滚操作。
优选的,所述判断返回的执行结果是否符合预设条件的步骤为:
判断返回的执行结果是否为负值或者小于预设值;
若是,则符合预设条件。
优选的,所述方法还包括:
判断所述回滚操作是否执行成功;
若否,则依据所述执行结果生成报警提示信息。
优选的,所述数据处理子操作为对数据进行增加数值或减少数值的操作。
优选的,所述方法还包括:
将所述数据处理组添加到预置的数据处理队列中。
本申请还提供了一种并发事务的处理装置,包括:
事务接收模块,用于接收客户端提交的多个事务;
拆分模块,用于将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
并发模块,用于并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
优选的,所述拆分模块包括针对各个事务的拆分子模块,各个拆分子模块并发执行。
优选的,所述装置还包括:
执行结果判断模块,用于在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件,若否,则执行回滚模块;
回滚模块,用于执行所述数据处理组中各个数据处理子操作的回滚操作。
优选的,所述装置还包括:
回滚操作判断模块,用于判断所述回滚操作是否执行成功,若否,则依据所述执行结果生成报警提示信息。
与现有技术相比,本申请具有以下优点:
本申请针对提交的多个并发事务,逐个拆分为针对单个账户的子操作,然后并发执行各事务对应的各组子操作,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。由于子操作执行的结果直接生效,因此,不同组的子操作同时执行时,不会出现脏读脏写的问题,保证了数据的完整性和一致性;并且,由于不同组的子操作同时执行,相比于读写锁机制,大大提高了并发事务的处理效率。
由于本申请在每组子操作处理完成后,对于执行结果不符合业务逻辑的情况还可以执行各组子操作的回滚操作,保证了数据处理结果的准确性,并且,同时执行一组子操作的回滚操作保证了这组子操作中所有业务同时撤销,保证了事务处理的完整性和账户余额的一致性,避免了资金风险以及冻结资金所增加事务处理系统复杂度。
本申请中,针对不同事务的拆分操作可以同时执行,一个子操作组的执行和另一个子操作组的回滚之间也可以同时执行,从而可以进一步提高并发事务的处理效率。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
附图说明
图1是本申请的一种并发事务的处理方法实施例1的流程图;
图2是本申请的一种并发事务的处理方法实施例2的流程图;
图3是本申请的一种并发事务的处理装置实施例1的结构框图;
图4是本申请的一种并发事务的处理装置实施例2的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
业务系统中,常常出现多个事务同时访问同一条热点数据的情况,多个事务同时对一个数据进行修改时,会出现脏写的问题。以买家A,买家B同时向卖家C购买30元商品为例,买家A创建事务T1,买家B创建事务T2。
T1事务包括以下几个步骤:
1、先取得买家A的账户余额为100元;
2、取得卖家C的账户余额为200元;
3、买家A的账户更新为70元(扣款操作);
4、卖家账户C更新为230元(充值操作);
5、其它业务处理;
6、提交事务或回滚。
T2事务包括以下几个步骤:
1、先取得买家B的账户余额为100元
2、取得卖家C的账户余额为200元(所以)
3、买家B的账户更新为70元(扣款操作)
4、卖家账户C更新为230元(充值操作)
5、其它业务处理。
6、提交事务或回滚。
由于事务提交有先后顺序,数据库对事务的处理结果是在事务没提交前不会更改原来的账户余额,也就是说数据库只有当T1中的1、2、3、4步骤全部完成后,才会更改上述帐户余额。因此,在T2事务中的第2步读取时,可能T1的步骤并没有全部完成,帐户余额并没有更新,读到还是T1事务进行前卖家C的值,已经产生脏读现象;同样,在事务T2中的第4步产生了脏写现象。最后的结果体现为,卖家C买了两件商品但是只收到一笔钱。
现有技术中多通过读写锁机制解决上述问题,此处以账户系统余额的并发操作为例,某大商户账户的余额,可能由于大量交易,产生大量对余额的并发事务。
读写锁机制的步骤如下:
a、针对每一笔交易发起一个事务,相继产生多个事务;
b、多个事务在数据库内通过抢锁,使得某一个事务T0,成功抢到本商户帐户余额记录的读写锁L0;
c、其他事务试图对余额记录进行加锁,发现记录已被锁定,进入等待装态,等待当前事务T0,直到T0释放读写锁L0,再回到步骤b;
d、当前事务T0,读取当前账户余额,并在此基础上根据交易做余额演算;
e、当前事务T0,将演算结果写入数据库,更新本商户帐务余额记录;
f、当前事务T0,完成本次操作,释放当前记录读写锁L0,回到步骤b。
读写锁是一个全局的排它锁,它有如下两方面特性:1、加锁后其它事务中不能在读到记录值;2、加锁后其它事务中不能对该记录的值做变更。典型的sql语义是select for update。读写锁机制将写操作串行化,逐一进行处理,从而保证数据的一致性和完整性;但由于是顺序执行事务,在大并发量情况下,处理效率很低,业务处理系统性能存在严重瓶颈。
现有技术中,还可以通过缓存记账机制解决并发事务脏读脏写的问题,具体步骤如下:
a、除了本商户帐户余额记录之外,另外建一张缓冲记账记录表;
b、多个并发交易事务,将本交易需要打款或扣款的金额数量插入到缓冲记账记录表中;
c、定期将缓冲记账中的记录做合并处理,并将汇总结果金额回写入本商户帐户余额记录中。
缓存记账机制对于多个事务,采取批处理方式,可以提高事务处理的效率,解决了按顺序处理的性能瓶颈。依据缓冲记账的方式,在记录进行合并后,多个事务已经执行完成,若发现账户余额不符合逻辑(例如,执行多个扣除金额的事务后,账户余额为负)则无法进行回滚,无法保证数据处理结果的准确性;同时,为了防止超额扣款引发的资金损失,需要在业务层面做额外保证,一般是通过向用户缴纳一定保证金的方式来解决的。
另一种是需要撤销的事务是非法操作,一个事务执行完毕后发现是非法操作想要取消交易时,由于缓冲记账的记录没有完全合并而不能立即取消,只能先将资金冻结住,然后走冲账模式进行处理。
由此,缓冲记账的方式严重影响了用户的使用,提高了业务系统的运营成本和风险,增加了业务系统的整体复杂度。
参考图1,示出了本申请的一种并发事务的处理方法实施例1的流程图,具体可以包括以下步骤:
步骤101、接收客户端提交的多个事务。
业务系统的客户端在接收到事务请求时,会依据数据处理请求,对相应的数据进行处理,例如,在交易系统客户端买家A向卖家B购买30元的商品,这时,相应的事务为,对账户A的账户余额减少30元,对账户B的账户余额增加30元。
在数据库系统中,事务是一个操作序列,例如,银行转帐工作从一个帐号扣款并使另一个帐号增款,包含了扣款和增款这两个操作。
步骤102、将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组。
本申请中,事务包括对不同的操作对象的处理,按照针对的账户的不同,可以拆分为多个针对单个账户的数据处理子操作。
例如,买家A和买家B同时向卖家C购买30元的商品,生成事务T1和T2,T1包括对买家A的账户减少30元和对卖家C的账户增加30元的操作,T2包括对买家B的账户减少30元和对卖家C的账户增加30元的操作。按照操作对象的不同,事务T1可以拆分为对买家A的账户减少30元(T11)和对卖家C的账户增加30元(T12)的这两个子操作,并组成一个数据处理组,事务T2可以拆分为对买家B的账户减少30元(T21)和对卖家C的账户增加30元(T22)的这两个子操作,并组成一个数据处理组。
优选的,针对各个事务,所述将每个事务,可以拆分为多个针对单个账户的数据处理子操作的步骤并发执行,从而可以进一步加快并发事务的处理效率。
步骤103、并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
将各个事务拆分完后,并发执行对应的数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。如上例,事务T1中T11和T12逐个执行,事务T2中T21和T22也是逐个执行,例如,T1中先执行T12,T2中先执行T22,T12和T22可以同时执行,即同时执行对账户C增加30元的两个操作,然后在同时执行T11和T21两个操作。
在单处理器系统(Uni Processor)中,能够在单条指令(一条指令同时完成读和写的操作)中完成的操作都可以认为是原子操作,原子级操作是不可分割的,在执行完毕前不会被任何其它任务或事件中断。本申请中,针对单个账户的数据处理子操作就是原子级操作。
现有技术中,由于一个事务包括多个针对多个账户的多个操作,事务的处理结果需等待多个操作逐个执行完成后,才会提交事务处理结果,更新原数据。以事务T1为例,先执行T12,再执行T11,T12的执行结果要等待T11执行完毕后一同提交,相当于T12提交结果的操作被T11中断。在事务T1提交处理结果之前,其他事务取到的数据是事务T1处理前的原数据,因此会出现脏读和脏写的问题。
本申请对事务拆分后得到的是针对一个账户执行的原子级操作,原子级的操作执行完毕不需要等待其他操作处理,因此不需要提交处理结果的步骤,执行完毕后处理结果直接生效,以事务T1为例,T12执行完毕后即时提交,然后执行T11,执行完毕也是即时提交;同时由于在数据库系统中的数值型数据具有天然的原子性(即数值类型数据做变更时不存在中间状态),因此,不同组的数据处理子操作同时执行时,不会出现脏读和脏写的问题。
另外,针对数值型数据只有更新(update)一种操作,数值型数据的update动作可以描述成增加数值或减少数值这两种动作,这样事务对多数据的更新,实际上就被分解成了若干原子级的加减动作。
本申请的方法在多CPU的服务器上执行,与传统单CPU不同的是,在现有的多CPU服务器中,对同一账户数值中加减操作是多个加法运算器并发的执行的,如上例,T1中先执行T12,T2中先执行T22,T12和T22可以同时执行,T11和T21也可以同时执行。
加法运算器并发执行对同一数据的多个动作时,首先记录下各个动作的变更数据,并即时返回依据原数据计算出的执行结果,然后依据原数据和所有的变更数据计算出一个最终结果,从而可以保证数据数据处理结果的准确性。例如,卖家C账户的余额为200,T12和T22均是对卖家C账户增加30的操作,并发执行T12和T22时,先记录下两个加30的变更数据;然后即时返回T12对200加30的执行结果为230,T22对200加30的执行结果为230;两个返回的执行结果与最终结果无关,最后依据两个加30变更数据和原数据200,计算出最终结果为260。
同时,由于使用多CPU并发执行多个原子级操作和执行一个原子级操作的时间是一样的,因此本申请可以大大提高并发事务的处理效率,例如,原始值是0,一个对原始值加1的操作被执行的时间是1个单位,那么50个加1操作同时被执行,执行的时间也是1个单位。
以买家A(账户余额100),买家B(账户余额100)同时向卖家C(账户余额200)购买30元商品为例,买家A创建事务T1,买家B创建事务T2,按照读写锁的机制,各事务执行顺序举例如下:
事务T1:
1锁掉买家A的账户取得余额为100元
2锁掉买家C的账户取得余额为200元
3买家A的账户更新为70元(充值操作)
4卖家账户更新为230元(扣款操作)
5其它业务处理
6提交事务或回滚
7释放买家A事务锁
8释放卖家C事务锁
事务T2:
1锁掉买家B的账户取得余额为100元
2锁掉买家C的账户取得余额为230元
3买家A的账户更新为70元(充值操作)
4卖家账户更新为260元(扣款操作)
5其它业务处理(例如在购买商品时同时赠与积分或红包,在购买彩票付钱同时的投注行为)
6提交事务或回滚
7释放买家B事务锁
8释放卖家C事务锁
按照现有技术中读写锁的方式,将每个动作执行的时间记为1,2个事务执行完毕所耗费的时间为16个单位,随着并发事务量的增加,时间复杂度是O(n),n为事务的个数。
按照本申请的方法执行事务T1和T2,举例如下:
事务T1:
1买家A的账户执行减30元,即时返回执行结果为70元(扣款操作)
2卖家C账户增加30元即时返回执行结果为230元(充值操作)
3其它业务处理
4是否执行反函数回滚
事务T2:
1买家B的账户执行减30元,即时返回执行结果为70元(扣款操作)
2卖家C账户增加30元即时返回执行结果为230元(充值操作)
3其它业务处理
4是否执行反函数回滚
加法计数器依据两个加30变更数据和原数据200,计算出卖家C账户的余额为260。
按照本申请的方法,2个事务执行完毕所耗费的时间为8个单位,随着并发事务量的增加,时间复杂度是O,即处理时间不随着事务个数的增加而增加。
参考图2,示出了本申请的一种并发事务的处理方法实施例2的流程图,具体可以包括以下步骤:
步骤201、接收客户端提交的多个事务;
步骤202、将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
在本实施例中,还可以将拆分得到的各个数据处理组添加到数据处理队列中,如图2所示,所述方法还可以包括:
步骤203、将所述数据处理组添加到预置的数据处理队列中;
步骤204、并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
在本实施例中,可以依据各个数据处理组的执行结果判断是否需要进行回滚,如图2所示,所述方法还可以包括:
步骤205、在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件,若否,则执行步骤206;
所述步骤205可以包括:
子步骤S11、判断返回的执行结果是否为负值或者小于预设值,若是,则符合预设条件。
步骤206、执行所述数据处理组中各个数据处理子操作的回滚操作。
数据处理组的每个操作执行完成后,会返回多个执行结果,为了确保数据处理结果符合逻辑,需要对每个执行结果进行判断,若执行结果为负值或小于预设的某个值,例如,事务T1对账户A和B的操作执行完毕后,返回的结果为账户A余额为-30元,账户B余额为40元,则账户A的余额不符合逻辑,这个数据处理组需要进行回滚。
在具体的实现中,除了数据处理结果不合逻辑的情况,还可以判断事务是否是非法操作。具体而言,可以借助于第三方系统(例如风险控制系统CTU),依据执行结果和用户行为,进行数据挖掘分析,判断事务是否是非法操作,例如该账户是否被盗用,是否为虚假交易,是否有洗钱,是否有非法提现。这种非法操作的判断返回判断结果需要一定的时间间隔。
回滚操作是原操作的逆操作,例如,T11为对账户A减少30元,对应的逆操作为对账户A增加30元。
交易系统数据库具备完整性,即一个事务必然包括对两个不同对象的操作,一个数据变化的同时,另一个数据也会发生相应的变化,数据总量保持不变。对于执行结果不符合业务逻辑的情况执行各组子操作的回滚操作,不仅保证了数据处理结果的准确性,由于同时执行一组子操作的回滚操作保证了这组子操作中所有业务同时撤销,保证了事务处理的完整性和账户余额的一致性;并且,与现有技术中缓存账户的方式相比,避免了资金风险以及冻结资金所增加事务处理系统复杂度。
在本申请的一种优选实施例中,各个数据处理组的回滚操作与不同数据处理组的数据处理子操作或回滚操作可以并发执行,其它事务的回滚操作不影响当前事务的操作。,从而可以进步一提高并发事务的处理效率。
在本实施例中,在执行回滚操作后,还可以进一步判断回滚操作是否执行成功,如图2所示,所述方法还可以包括:
步骤207、判断所述回滚操作是否执行成功,若否,则执行步骤208.
步骤208、依据所述执行结果生成报警提示信息。
回滚操作执行成功后会返回一个成功的信息,若未收到该信息则表明回滚操作执行失败,可以依据回滚失败的事务对应的执行结果生成报警信息,例如,事务T1处理结果为买家A账户余额-30,卖家账户B余额为30,将报警信息展示在交易系统的客户端,以供技术人员或是用户进行处理。
综上所述,本申请针对提交的多个并发事务,逐个拆分为针对单个账户的子操作,然后并发执行各事务对应的各组子操作,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。由于子操作执行的结果直接生效,因此,不同组的子操作同时执行时,不会出现脏读脏写的问题,保证了数据的完整性和一致性;并且,由于不同组的子操作同时执行,相比于读写锁机制,大大提高了并发事务的处理效率。
由于本申请在每组子操作处理完成后,对于执行结果不符合业务逻辑的情况还可以执行各组子操作的回滚操作,保证了数据处理结果的准确性,并且,同时执行一组子操作的回滚操作保证了这组子操作中所有业务同时撤销,保证了事务处理的完整性和账户余额的一致性,避免了资金风险以及冻结资金所增加事务处理系统复杂度。
本申请中,针对不同事务的拆分操作可以同时执行,一个子操作组的执行和另一个子操作组的回滚之间也可以同时执行,从而可以进一步提高并发事务的处理效率。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参考图3,示出了本申请的一种并发事务的处理装置实施例1的结构框图,具体可以包括以下模块:
事务接收模块301,用于接收客户端提交的多个事务;
拆分模块302,用于将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
并发模块303,用于并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
在本申请的一种优选实施例中,所述拆分模块可以包括针对各个事务的拆分子模块,各个拆分子模块可以并发执行。
在本申请的一种优选实施例中,所述数据处理子操作可以为对数据进行增加数值或减少数值的操作。
参考图4,示出了本申请的一种并发事务的处理装置实施例2的结构框图,具体可以包括以下模块:
事务接收模块401,用于接收客户端提交的多个事务;
拆分模块402,用于将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
在本实施例中,还可以将拆分得到的各个数据处理组添加到数据处理队列中,如图4所示,所述装置还可以包括:
数据处理队列添加模块403,用于将所述数据处理组添加到预置的数据处理队列中。
并发模块404,用于并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行;
在本实施例中,可以依据各个数据处理组的执行结果判断是否需要进行回滚,如图4所示,所述装置还可以包括:
执行结果判断模块405,用于在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件,若否,则执行回滚模块;
回滚模块406,用于执行所述数据处理组中各个数据处理子操作的回滚操作。
在本申请的一种优选实施例中,所述并发模块可以和所述回滚模块并发执行。
在本申请的一种优选实施例中,所述执行结果判断模块405可以包括:
数值判断子模块,用于判断返回的执行结果是否为负值或者小于预设值,若是,则符合预设条件。
在本实施例中,在执行回滚操作后,还可以进一步判断回滚操作是否执行成功,如图4所示,所述装置还可以包括:
回滚操作判断模块407,用于判断所述回滚操作是否执行成功,若否,则执行报警提示模块;
报警提示模块408,用于依据所述执行结果生成报警提示信息。
由于所述装置实施例基本相应于前述图1和图2所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种并发事务的处理方法,以及,一种并发事务的处理装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种并发事务的处理方法,其特征在于,包括:
接收客户端提交的多个事务;
将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
2.如权利要求1所述的方法,其特征在于,针对各个事务,所述将每个事务,拆分为多个针对单个账户的数据处理子操作的步骤并发执行。
3.如权利要求1所述的方法,其特征在于,各个数据处理组的回滚操作与不同数据处理组的数据处理子操作或回滚操作并发执行。
4.如权利要求1所述的方法,其特征在于,还包括:
在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件;
若不符合,则执行所述数据处理组中各个数据处理子操作的回滚操作。
5.如权利要求4所述的方法,其特征在于,所述判断返回的执行结果是否符合预设条件的步骤为:
判断返回的执行结果是否为负值或者小于预设值;
若是,则符合预设条件。
6.如权利要求4所述的方法,其特征在于,还包括:
判断所述回滚操作是否执行成功;
若否,则依据所述执行结果生成报警提示信息。
7.如权利要求1所述的方法,其特征在于,所述数据处理子操作为对数据进行增加数值或减少数值的操作。
8.如权利要求1所述的方法,其特征在于,还包括:
将所述数据处理组添加到预置的数据处理队列中。
9.一种并发事务的处理装置,其特征在于,包括:
事务接收模块,用于接收客户端提交的多个事务;
拆分模块,用于将每个事务,拆分为多个针对单个账户的数据处理子操作,并构成一个数据处理组;
并发模块,用于并发执行各个数据处理组,其中,同一组的数据处理子操作逐个执行,不同组的数据处理子操作同时执行。
10.如权利要求9所述的装置,其特征在于,所述拆分模块包括针对各个事务的拆分子模块,各个拆分子模块并发执行。
11.如权利要求9所述的装置,其特征在于,还包括:
执行结果判断模块,用于在各个数据处理组执行完毕后,判断返回的执行结果是否符合预设条件,若否,则执行回滚模块;
回滚模块,用于执行所述数据处理组中各个数据处理子操作的回滚操作。
12.如权利要求11所述的装置,其特征在于,还包括:
回滚操作判断模块,用于判断所述回滚操作是否执行成功,若否,则依据所述执行结果生成报警提示信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210328626.6A CN103677771B (zh) | 2012-09-06 | 2012-09-06 | 一种并发事务的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210328626.6A CN103677771B (zh) | 2012-09-06 | 2012-09-06 | 一种并发事务的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103677771A true CN103677771A (zh) | 2014-03-26 |
CN103677771B CN103677771B (zh) | 2017-01-18 |
Family
ID=50315449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210328626.6A Active CN103677771B (zh) | 2012-09-06 | 2012-09-06 | 一种并发事务的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103677771B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050564A (zh) * | 2014-06-13 | 2014-09-17 | 中国民航信息网络股份有限公司 | 高并发通用支付方法 |
CN104731943A (zh) * | 2015-03-31 | 2015-06-24 | 华为技术有限公司 | 一种服务器和数据处理方法 |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
CN106168983A (zh) * | 2016-08-08 | 2016-11-30 | 中国农业银行股份有限公司 | 一种混合资源处理方法及装置 |
CN106910127A (zh) * | 2016-06-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种防止理财产品的资金重复发放的方法及装置 |
CN107016604A (zh) * | 2017-02-22 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 缓冲记账的方法、装置及设备 |
CN107105064A (zh) * | 2017-06-02 | 2017-08-29 | 上海艾融软件股份有限公司 | 一种交易信息的推送方法及系统 |
CN107526629A (zh) * | 2016-06-22 | 2017-12-29 | 中兴通讯股份有限公司 | 一种事务处理系统及并发控制方法 |
CN107818170A (zh) * | 2017-11-14 | 2018-03-20 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN108615145A (zh) * | 2018-04-09 | 2018-10-02 | 交通银行股份有限公司 | 一种账户并行存取款的方法以及系统 |
CN109543865A (zh) * | 2018-11-13 | 2019-03-29 | 中国银行股份有限公司 | 预约交易处理方法及装置 |
WO2020082871A1 (zh) * | 2018-10-26 | 2020-04-30 | 阿里巴巴集团控股有限公司 | 一种并行化执行区块链交易的方法、装置及系统 |
CN111190912A (zh) * | 2019-12-27 | 2020-05-22 | 山大地纬软件股份有限公司 | 一种基于行变更的面向大事务的分片执行方法和装置 |
US10956397B2 (en) | 2019-04-16 | 2021-03-23 | Wuxi Research Institute Of Applied Technologies Tsinghua University | Method and apparatus for processing concurrent transactions, and storage medium |
CN112685189A (zh) * | 2020-12-24 | 2021-04-20 | 北京中交兴路信息科技有限公司 | 一种实现数据处理方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5920857A (en) * | 1997-08-04 | 1999-07-06 | Naphtali Rishe | Efficient optimistic concurrency control and lazy queries for B-trees and other database structures |
CN1588317A (zh) * | 2004-09-02 | 2005-03-02 | 武汉大学 | 用数量锁提高电子商务服务系统资源利用率的方法 |
US20070174185A1 (en) * | 2002-10-03 | 2007-07-26 | Mcgoveran David O | Adaptive method and software architecture for efficient transaction processing and error management |
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN102122288A (zh) * | 2010-12-21 | 2011-07-13 | 北京高森明晨信息科技有限公司 | 一种并发控制的方法及系统 |
CN102306200A (zh) * | 2011-09-22 | 2012-01-04 | 用友软件股份有限公司 | 增量数据操作语句的并发应用装置和方法 |
-
2012
- 2012-09-06 CN CN201210328626.6A patent/CN103677771B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5920857A (en) * | 1997-08-04 | 1999-07-06 | Naphtali Rishe | Efficient optimistic concurrency control and lazy queries for B-trees and other database structures |
US20070174185A1 (en) * | 2002-10-03 | 2007-07-26 | Mcgoveran David O | Adaptive method and software architecture for efficient transaction processing and error management |
CN1588317A (zh) * | 2004-09-02 | 2005-03-02 | 武汉大学 | 用数量锁提高电子商务服务系统资源利用率的方法 |
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN102122288A (zh) * | 2010-12-21 | 2011-07-13 | 北京高森明晨信息科技有限公司 | 一种并发控制的方法及系统 |
CN102306200A (zh) * | 2011-09-22 | 2012-01-04 | 用友软件股份有限公司 | 增量数据操作语句的并发应用装置和方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050564A (zh) * | 2014-06-13 | 2014-09-17 | 中国民航信息网络股份有限公司 | 高并发通用支付方法 |
CN104050564B (zh) * | 2014-06-13 | 2017-11-14 | 中国民航信息网络股份有限公司 | 高并发通用支付方法 |
WO2016155332A1 (zh) * | 2015-03-31 | 2016-10-06 | 华为技术有限公司 | 一种服务器和数据处理方法 |
CN104731943A (zh) * | 2015-03-31 | 2015-06-24 | 华为技术有限公司 | 一种服务器和数据处理方法 |
CN104731943B (zh) * | 2015-03-31 | 2019-09-13 | 华为技术有限公司 | 一种服务器和数据处理方法 |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
CN105955804B (zh) * | 2016-04-22 | 2018-06-05 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
CN106910127A (zh) * | 2016-06-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种防止理财产品的资金重复发放的方法及装置 |
CN107526629A (zh) * | 2016-06-22 | 2017-12-29 | 中兴通讯股份有限公司 | 一种事务处理系统及并发控制方法 |
CN107526629B (zh) * | 2016-06-22 | 2023-04-14 | 中兴通讯股份有限公司 | 一种事务处理系统及并发控制方法 |
CN106168983B (zh) * | 2016-08-08 | 2019-12-20 | 中国农业银行股份有限公司 | 一种混合资源处理方法及装置 |
CN106168983A (zh) * | 2016-08-08 | 2016-11-30 | 中国农业银行股份有限公司 | 一种混合资源处理方法及装置 |
CN107016604A (zh) * | 2017-02-22 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 缓冲记账的方法、装置及设备 |
CN107105064A (zh) * | 2017-06-02 | 2017-08-29 | 上海艾融软件股份有限公司 | 一种交易信息的推送方法及系统 |
CN107818170A (zh) * | 2017-11-14 | 2018-03-20 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN107818170B (zh) * | 2017-11-14 | 2021-09-28 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN108615145A (zh) * | 2018-04-09 | 2018-10-02 | 交通银行股份有限公司 | 一种账户并行存取款的方法以及系统 |
WO2020082871A1 (zh) * | 2018-10-26 | 2020-04-30 | 阿里巴巴集团控股有限公司 | 一种并行化执行区块链交易的方法、装置及系统 |
CN109543865A (zh) * | 2018-11-13 | 2019-03-29 | 中国银行股份有限公司 | 预约交易处理方法及装置 |
US10956397B2 (en) | 2019-04-16 | 2021-03-23 | Wuxi Research Institute Of Applied Technologies Tsinghua University | Method and apparatus for processing concurrent transactions, and storage medium |
CN111190912A (zh) * | 2019-12-27 | 2020-05-22 | 山大地纬软件股份有限公司 | 一种基于行变更的面向大事务的分片执行方法和装置 |
CN112685189A (zh) * | 2020-12-24 | 2021-04-20 | 北京中交兴路信息科技有限公司 | 一种实现数据处理方法、装置、设备及介质 |
CN112685189B (zh) * | 2020-12-24 | 2024-03-22 | 北京中交兴路信息科技有限公司 | 一种实现数据处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103677771B (zh) | 2017-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677771A (zh) | 一种并发事务的处理方法和装置 | |
JP6224283B1 (ja) | スマートコントラクトによるエスクロー決済方法およびシステム | |
US7478062B2 (en) | Financial management system and method | |
US20200380505A1 (en) | Auto-pilot transactions using smart contracts | |
CN110020936B (zh) | 基于区块链的资产管理方法及装置、电子设备 | |
CN110659887A (zh) | 一种基于区块链的自动交易处理系统和方法 | |
WO2021042810A1 (zh) | 基于区块链的资产清偿方法及装置、电子设备 | |
CN107358425B (zh) | 交易费用的计算及支付方法和装置、交易平台及存储介质 | |
KR101442362B1 (ko) | 요청 처리 및 요청 분석의 동시 실행 | |
CN109146488A (zh) | 资产撮合方法、资产撮合系统、设备和存储介质 | |
CN111260362A (zh) | 一种区块链网络的信息处理方法及装置、存储介质 | |
CN112950302A (zh) | 订单的处理方法及装置 | |
CN110689394B (zh) | 业务补单的处理方法及装置 | |
CN109472680A (zh) | 一种账务处理方法及系统 | |
CN111640006B (zh) | 银行代收付方法、装置、终端及存储介质 | |
CN110782310B (zh) | 从第三方平台异步获取用户属性信息的方法、装置和系统 | |
CN1224947C (zh) | 电子钱包数据载体及管理电子支付的方法 | |
WO2020052429A1 (zh) | 一种数据统计方法、系统及终端设备 | |
CN112950185B (zh) | 一种基于并行执行的交易费支付方法、设备及储存介质 | |
Cheng et al. | Strategic payment routing in financial credit networks | |
CN113055401A (zh) | 一种企业业务的授权处理方法及装置 | |
Ramseyer et al. | Groundhog: Linearly-Scalable Smart Contracting via Commutative Transaction Semantics | |
Cárdenas et al. | Tiered access in RTGS systems: A DLT-based approach | |
CN116468432B (zh) | 订单的处理方法、装置、设备和介质 | |
CN115018325B (zh) | 业务处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191209 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: Alibaba Group Holding Co., Ltd. |