一种拆分记账方法、账务系统及支付系统技术方案

技术编号:21716006 阅读:59 留言:0更新日期:2019-07-27 19:38
本发明专利技术公开了一种拆分记账方法、账务系统及支付系统,包括:获取热点账户的账户余额;将所述余额数字按照十进制单位的顺序,拆分为共计N个余额单位表,N为所述余额数字在十进制表示状态下的位数;每个余额单位表中包含M行记录,M为其所在的余额单位表所表示的十进制单位的数值;每一行记录具有一个主键ID;当记账请求为支出请求时,从不同的余额单位表中删除相应行数的记录;当记账请求为入账请求时,从不同的余额单位表中增加相应行数的记录。此外,还公开了相应的账务系统和支付系统。本发明专利技术解决了热点账户(单账户高并发)记账瓶颈,把现有技术中的抢锁记账方式变更为无锁可并发式记账,提升了热点账户的并发量及吞吐量。

A Method of Split Accounting, Accounting System and Payment System

【技术实现步骤摘要】
一种拆分记账方法、账务系统及支付系统
本专利技术涉及在线支付业务领域,尤其涉及一种拆分记账方法、账务系统及支付系统。
技术介绍
当前,在线支付应用的行业越来越广泛,例如电商、航旅、数娱、在线教育、投资理财、大宗交易、基金保险等等。在线支付通常需要引入第三方支付平台。第三方支付平台通常有自己的一套客户/账户/账务系统。在第三方支付平台的账务系统的处理中,数据从一个账户转出,或者有数据转入一个账户,账户都会收到记账请求,并都有一个记账处理的过程。记账处理过程主要包括两部分,一是记录记账凭证,二是更新账户的余额。现有的记账方式一般为一个账户一条余额记录,为了保证账户不被其他请求影响数据的准确性,在进行记账处理时,会先对账户的资源加锁,记账处理完毕后会自动释放锁。随着账务处理业务量的增大,账务数据库中的账户常常会在瞬间产生多个并发操作,但所有对应的并发线程中只有一个线程能够持有当前账户的资源锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁加锁释锁,使该账户成为账务数据库热点,即热点账户,产生性能瓶颈点,严重影响账务数据库的性能。因此,需要提供一种记账方法,解决热点账户高并发的能力受制于数据库悲观锁的瓶颈限制的问题,以提高热点账户的并发量及吞吐量。
技术实现思路
本专利技术的目的在于提供一种拆分记账方法,以解决上述技术背景中提出的问题。为实现上述目的,本专利技术采用以下技术方案:本专利技术第一个方面提供了一种拆分记账方法,包括:获取账户的记账请求;判断所述账户是否属于热点账户,所述热点账户是指在交易系统中发生资金进出操作、加锁解锁操作的频率大于预设阈值的账户;若所述账户属于热点账户,则进入拆分记账流程,所述拆分记账流程包括:从所述交易系统的内存中获取所述热点账户的账户余额,得到以分为单位的余额数字;将所述余额数字按照十进制单位的顺序,拆分为共计N个余额单位表,N为所述余额数字在十进制表示状态下的位数;每个余额单位表中包含M行记录,M为其所在的余额单位表所表示的十进制单位的数值;每一行记录具有一个主键ID;当所述记账请求为支出请求时,若支出金额在资金控制阈值内,则根据支出金额,分别从不同的余额单位表中删除相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程;否则,拒绝本次交易;所述资金控制阈值是根据所述热点账户的历史资金流出数据得到的安全金额;当所述记账请求为入账请求时,则根据入账金额,分别从不同的余额单位表中增加相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程。优选地,所述记账请求为支出请求时:第T-1余额单位表中的已有的记录的行数为a,欲删除的行数为b,a、b为大于等于0且小于等于9的自然数;当a≥b时,第T-1余额单位表中的记录更新为(a-b)行;当a<b时,第T-1余额单位表中增加(10-b)行新记录,同时,与其相邻的更高单位的第T余额单位表中删除一行记录;其中,T为大于等于2且小于等于N的自然数。优选地,所述记账请求为入账请求时:第T-1余额单位表中的已有的记录的行数为a,欲增加的行数为c,a、c为大于等于0且小于等于9的自然数;当a+c≤9时,第T-1余额单位表中的记录更新为(a+c)行;当a+c>9时,第T-1余额单位表中删除(10–c)行记录,同时,与其相邻的更高单位的第T余额单位表中增加一行记录;其中,T为大于等于2且小于等于N的自然数。优选地,所述拆分记账方法还包括并发处理流程,所述并发处理流程包括:当每个记账请求到来时,若需要更新所述余额单位表的记录,则获取所述缓存单元中该余额单位表中最后一笔记录的主键ID的值ID;从所述缓存单元中抢占主键ID区域进行记账操作;所述主键ID区域为ID+1,ID+2,……,ID+K,K为大于等于1的自然数,表示欲删除或欲增加记录的行数。优选地,所述主键ID为一固定长度的数据,其中包括代表具有该主键ID的行所在的余额单位表的单位标识,以及代表余额单位表的记录更新次数的自然数。优选地,所述拆分记账方法还包括:第T-1余额单位表中的已有的记录的行数为a,欲删除的行数为b,a、b为大于等于0且小于等于9的自然数;当第T-1余额单位表中的记录在删除过程中出现异常,则a≥b时,第T-1余额单位表中的记录增加b行;a<b时,第T-1余额单位表中删除(10-b)行记录,同时,与其相邻的更高单位的第T余额单位表中增加一行记录;其中,T为大于等于2且小于等于N的自然数。优选地,所述拆分记账方法还包括:第T-1余额单位表中的已有的记录的行数为a,欲增加的行数为c,a、c为大于等于0且小于等于9的自然数;当第T-1余额单位表中的记录在增加过程中出现异常,则当a+c≤9时,第T-1余额单位表中的记录删除c行;当a+c>9时,第T-1余额单位表中增加(10–c)行记录,同时,与其相邻的更高单位的第T余额单位表中删除一行记录;其中,T为大于等于2且小于等于N的自然数。优选地,所述拆分记账方法还包括:若支出金额不在资金控制阈值内,记录本次交易失败;当失败次数达到预定次数阈值时,更新所述资金控制阈值。优选地,所述缓存单元为Redis缓存数据库。优选地,所述缓存单元包括多个hash结构的缓存块,属于同一个账户的所有记账请求被保存在同一个hash结构的缓存块中;hash结构中key为十进制单位,value为该十进制单位对应的余额单位表中的主键ID。优选地,所述余额单位表中的十进制单位可以为人民币,也可以为美元或者其它币种。本专利技术第二个方面提供了一种账务系统,采用上述任一拆分记账方法,所述账务系统包括:——接收模块,接收交易系统发送的记账请求,所述记账请求是针对账户的账户余额发生变动的多笔待处理交易;——判断模块,用于在接收到记账请求后,判断所述账户是否属于热点账户,所述热点账户是指在交易系统中发生资金进出操作、加锁解锁操作的频率大于预设阈值的账户;——获取模块,当所述账户属于热点账户时,从交易系统的内存中获取所述账户的账户余额,得到以分为单位的余额数字;——拆分记账模块,将所述余额数字按照十进制单位的顺序,拆分为共计N个余额单位表,N为所述余额数字在十进制表示状态下的位数;每个余额单位表中包含M行记录,M为其所在的余额单位表所表示的十进制单位的数值;每一行记录具有一个主键ID;当所述记账请求为支出请求时,若支出金额在资金控制阈值内,则根据支出金额,分别从不同的余额单位表中删除相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元;所述资金控制阈值是根据所述热点账户的历史资金流出数据得到的安全金额;当所述记账请求为入账请求时,则根据入账金额,分别从不同的余额单位表中增加相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元;——缓存单元,针对所述热点账户的每一个记账请求,记录每个余额单位表中最后一笔记录的主键ID的值ID。优选地,所述账务系统还包括并发处理模块:所述并发处理模块,用于在每个记账请求到来,且需要更新所述余额单位表的记录时,从所述缓存单元中抢占主键ID区域进行记账操作;本文档来自技高网...

【技术保护点】
1.一种拆分记账方法,其特征在于,包括:获取账户的记账请求;判断所述账户是否属于热点账户,所述热点账户是指在交易系统中发生资金进出操作、加锁解锁操作的频率大于预设阈值的账户;若所述账户属于热点账户,则进入拆分记账流程,所述拆分记账流程包括:从所述交易系统的内存中获取所述热点账户的账户余额,得到以分为单位的余额数字;将所述余额数字按照十进制单位的顺序,拆分为共计N个余额单位表,N为所述余额数字在十进制表示状态下的位数;每个余额单位表中包含M行记录,M为其所在的余额单位表所表示的十进制单位的数值;每一行记录具有一个主键ID;当所述记账请求为支出请求时,若支出金额在资金控制阈值内,则根据支出金额,分别从不同的余额单位表中删除相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程;否则,拒绝本次交易;所述资金控制阈值是根据所述热点账户的历史资金流出数据得到的安全金额;当所述记账请求为入账请求时,则根据入账金额,分别从不同的余额单位表中增加相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程。...

【技术特征摘要】
1.一种拆分记账方法,其特征在于,包括:获取账户的记账请求;判断所述账户是否属于热点账户,所述热点账户是指在交易系统中发生资金进出操作、加锁解锁操作的频率大于预设阈值的账户;若所述账户属于热点账户,则进入拆分记账流程,所述拆分记账流程包括:从所述交易系统的内存中获取所述热点账户的账户余额,得到以分为单位的余额数字;将所述余额数字按照十进制单位的顺序,拆分为共计N个余额单位表,N为所述余额数字在十进制表示状态下的位数;每个余额单位表中包含M行记录,M为其所在的余额单位表所表示的十进制单位的数值;每一行记录具有一个主键ID;当所述记账请求为支出请求时,若支出金额在资金控制阈值内,则根据支出金额,分别从不同的余额单位表中删除相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程;否则,拒绝本次交易;所述资金控制阈值是根据所述热点账户的历史资金流出数据得到的安全金额;当所述记账请求为入账请求时,则根据入账金额,分别从不同的余额单位表中增加相应行数的记录,更新所述热点账户的账户余额,并将最后一笔记录的主键ID缓存于一缓存单元,结束本次拆分记账流程。2.根据权利要求1所述的一种拆分记账方法,其特征在于,所述记账请求为支出请求时:第T-1余额单位表中的已有的记录的行数为a,欲删除的行数为b,a、b为大于等于0且小于等于9的自然数;当a≥b时,第T-1余额单位表中的记录更新为(a-b)行;当a<b时,第T-1余额单位表中增加(10-b)行新记录,同时,与其相邻的更高单位的第T余额单位表中删除一行记录;其中,T为大于等于2且小于等于N的自然数。3.根据权利要求1所述的一种拆分记账方法,其特征在于,所述记账请求为入账请求时:第T-1余额单位表中的已有的记录的行数为a,欲增加的行数为c,a、c为大于等于0且小于等于9的自然数;当a+c≤9时,第T-1余额单位表中的记录更新为(a+c)行;当a+c>9时,第T-1余额单位表中删除(10–c)行记录,同时,与其相邻的更高单位的第T余额单位表中增加一行记录;其中,T为大于等于2且小于等于N的自然数。4.根据权利要求1所述的一种拆分记账方法,其特征在于,所述拆分记账方法还包括并发处理流程,所述并发处理流程包括:当每个记账请求到来时,若需要更新所述余额单位表的记录,则获取所述缓存单元中该余额单位表中最后一笔记录的主键ID的值ID;从所述缓存单元中抢占主键ID区域进行记账操作;所述主键ID区域为ID+1,ID+2,……,ID+K,K为大于等于1的自然数,表示欲删除或欲增加记录的行数。5.根据权利要求1所述的一种拆分记账方法,其特征在于,所述拆分记账方法还包括:第T-1余额单位表中的已有的记录的行数为a,欲删除的行数为b,a、b为大于等于0且小于等于9的自然数;当第T-1余额单位表中的记录在删除过程中出现异常,则a≥b时,第T-1余额单位表中的记录增加b行;a&...

【专利技术属性】
技术研发人员:舒蓁王峰
申请(专利权)人:宝付网络科技上海有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1