热点账户的账户记录快速处理方法与流程

文档序号:18632705发布日期:2019-09-11 21:49阅读:802来源:国知局
热点账户的账户记录快速处理方法与流程

本发明属于信息处理技术领域,特别是涉及一种热点账户的账户记录快速处理方法。



背景技术:

交易所交易平台通常有自己的一套客户/账户/账务系统,用于记录各个客户的基本信息、账户信息、账务信息,交易平台包括了用于下单、撮合的交易系统,以及用于记账等账务处理的账务系统。

在业务高峰期时,账务系统处理热点账户高并发的能力受制于数据库悲观锁的瓶颈限制,悲观锁指的是对数据被外界的(包括本系统当前其他事务,以及来自外部系统的事务处理)修改持保守态度,在整个数据处理过程中,将数据处于锁定状态,它具有强烈的独占和排他特性,因此,需要提供一种账户记录快速处理方法,其能提高账务系统处理热点账户高并发的能力。

现有的记账方式中,为防止账务记录中的数据出现串行处理,每次只处理一条账务记录,根据账务记录类型进行账务金额变更,当系统中某个账户更新较为频繁时,会出现账务记录堆积、用户余额更新不及时的问题。



技术实现要素:

本发明的目的在于提供一种热点账户的账户记录快速处理方法,能够较为迅速的对账户记录进行并发处理,处理速度加快,账务记录不会出现堆积,用户余额更新及时。

本发明所采用的技术方案是,热点账户的账户记录快速处理方法,具体包括以下步骤:

步骤1,定时自动化程序计算出交易量占比高的交易账户标记为热点账户,将热点账户和交易平台手续费账户的用户信息配置到热点账户信息表中;

步骤2,当账户有扣款或者入账请求时查询请求账户是否属于热点账户或交易平台手续费账户,若该账户属于热点账户或交易平台手续费账户,将该账户的账务记录添加到缓冲记录表中,等待后续账务处理;若该账户不属于热点账户或交易平台手续费账户,则立刻进行账务入账或扣款操作;

步骤3,定时循环地从缓冲记录表中获取待处理的账务记录,设置用账户号表示的分布式锁;

步骤4,根据待处理账务记录的交易时间先后顺序,截取待处理账务记录中的前1000条账务记录加锁,生成批处理单号batchno;

步骤5,按照出金、入金循环汇总截取的1000条账务记录,分别加总待解冻出金账务记录数据和待入金账务记录数据,根据批次处理单号batchno和业务类型进行解冻出金操作和入金操作;

步骤6,将截取的1000条账务记录的处理号更新为batchno,账务记录状态更新为已完成。

进一步的,所述步骤3设置分布式锁和步骤4对账务记录加锁的过程如下:通过redissonclient的getlock获取rlock实例,lock()尝试获取锁,如果成功获得锁,则继续执行处理1000条账务记录的流程,否则等待锁被释放,然后再继续尝试获取锁,直到成功获得锁;unlock()方法释放获得的锁,并通知等待的节点锁已释放以便继续进行后续账务处理。

进一步的,所述步骤6进行解冻出金操作的步骤如下:获取加总后的出金账务记录数据,增加出金流水,根据出金账务记录数据计算出金总金额,减少账户余额;入金操作包括以下步骤:获取加总后的入金账务记录数据,增加入金流水,根据入金账务记录数据计算入金总金额,增加账户余额。

本发明的有益效果是:本发明的并发处理能力高,能够及时对账务记录进行处理,处理过程简单、方便管理,避免账务记录出现堆积,能及时更新用户的账户信息。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明的流程图。

图2是本发明出入金操作流程图。

图3是本发明与现有技术的效果对比图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

热点账户就是短时间内高频的进行扣款、入账动作的账户,也就是热点账户的数据为热点数据,将会被频繁更新;热点账户分为两种,一种是频繁扣款的账户,另外一种是频繁入账的账户;在交易系统中,主要的热点账户为通过api接口进行程序化交易的用户热点账户和交易系统手续费的收入热点账户。

热点账户的账户记录快速处理方法流程如图1所示,具体包括以下步骤:

步骤1,定时自动化程序分析计算出交易量占比高的交易账户,将其标记为热点账户,并将热点账户和交易平台手续费账户的用户信息配置到热点账户信息表中;

步骤2,当账户有扣款或者入账请求时查询请求账户是否属于热点账户或交易平台手续费账户,若该账户属于热点账户或交易平台手续费账户,将该账户的账务记录添加到缓冲记录表中,等待后续账务处理;若该账户不属于热点账户或交易平台手续费账户,则立刻进行账务入账或者扣款操作;

步骤3,定时循环的从缓冲记录表中获取待处理账务记录,设置以账户号表示的分布式锁;

步骤4,根据待处理账务记录的交易时间前后顺序,截取待处理账务记录中的前1000条账务记录并加锁,生成批处理单号batchno;

步骤5,按照出金、入金循环汇总截取的1000条账务记录,分别加总待解冻出金账户记录数据和待入金账户记录数据,根据批量处理单号batchno和业务类型进行解冻出金操作和入金操作,业务类型为冷冻业务类型和批入金业务类型;

步骤6,将截取的1000条账务记录的处理号更新为batchno,账务记录状态更新为已完成。

获取分布式锁和加锁的过程如下:

1、通过redissonclient的getlock()方法取得一个rlock实例;

2、lock()方法尝试获取锁,如果成功获得锁,则继续往下执行,否则等待锁被释放,然后再继续尝试获取锁,直到成功获得锁;

3、unlock()方法释放获得的锁,并通知等待的节点锁已释放。

入金操作包括:1、获取加总后的入金账务记录数据,2、增加入金流水,3、根据入金账务记录数据计算入金总金额,4、增加账户余额;

出金操作包括:1、获取加总后的出金账务记录数据,2、增加出金流水,3、根据出金账务记录数据计算出金总金额,4、减少账户余额。

本发明截取1000条账务记录,既能够满足账务处理速度,是账务不会堆积,又能够保证每次处理的账务记录的数据量对数据库开销适中,本发明对账务记录的加总处理流程如图2所示,首先对截取的1000条账务记录生成批处理单号batchno,然后根据批处理单号和冷冻业务类型加总待解冻出金账务数据,进行解冻出金操作,再根据批处理号和批入金业务类型加总待入金账务数据,进行入金操作,最后将账务记录的状态更新为已完成。

实施例

使用本发明所述热点账户账务处理方法对账务记录行进处理,处理结果如图3所示,图3以账务处理的时间累积为横坐标,以账务记录处理数为纵坐标表示本文明在账务处理过程中,以每秒处理320条账务记录时,账务处理过程运行平稳、没有账务堆积,每秒处理400条账务记录时,账务记录出现缓慢堆积,平均处理延时从0.47秒增长至20秒,合理推测不会出现账务堆积的上限在每秒成交340~350条账务记录。

说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1