一种记账的方法及装置制造方法及图纸

技术编号:19099266 阅读:32 留言:0更新日期:2018-10-03 02:57
本申请公开了一种记账的方法及装置,针对接收到的每个记账请求,先确定该记账请求针对的账户。之后,可先判断是否存在与该记账请求属于同一事务且针对同一账户的待处理的记账请求。若不存在,则可根据该记账请求是否需要扣除该账户的余额,确定是否可将该记账请求作为待处理记账请求进行存储。而若存在,则需要根据该记账请求以及待处理的记账请求,确定是否可将该记账请求作为待处理记账请求进行存储。

【技术实现步骤摘要】
一种记账的方法及装置
本申请涉及信息
,尤其涉及一种记账的方法及装置。
技术介绍
记账是指将企事业单位、个人或者家庭发生的经济业务,按照一定的记录方法在账簿上记录的行为。在账务数据库的处理中,数据从一个账户转出,或者有数据转入一个账户,账户都会收到记账请求,并都有一个记账处理的过程。记账处理过程主要包括两部分,一是记录记账凭证,二是更新账户的余值。为了保证账户不被其他请求影响数据的准确性,在进行记账处理时,会先对账户的资源加锁,记账处理完毕后会自动释放锁。随着账务处理业务量的增大,账务数据库中的账户常常会在瞬间产生多个并发操作,但所有对应的并发线程中只有一个线程能够持有当前账户的资源锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁加锁释锁,使该账户成为账务数据库热点,产生性能瓶颈点,严重影响账务数据库的性能。目前,随着无纸化办公的普及,通常由记账系统对各账户进行记账。而为了防止多个线程对同一个账户进行并发的记账操作,导致数据错误,在标准记账过程中,记账系统需要先对该账户写锁,使得只有持有该锁的线程可以对该账户进行操作,并在记账完成之后再释放该账户的锁。而对电子商务平台来说,交易业务存在高并发的特点。这就使得,标准记账过程对账户的写锁操作,严重影响了业务执行的效率。除了导致记账系统运行压力增大以外,还容易导致交易业务由于等待超时而失败。因此,在现有的电子商务平台的记账系统中,对于有高并发记账需求的账户,可预先为该账户配置缓冲记账的记账方法,以避免标准记账过程导致的一系列问题。具体的,在对账户进行缓冲记账时,记账系统无需实时更新该账户的余额,而是按周期由各线程根据对该账户的记账请求,确定该账户的各记账明细并存储在数据库中。其中,该周期具体时长,可根据需要设置。由各线程分别根据周期内对该账户的记账请求,确定记账明细并存储在数据库中。其中,该一段时间具体多长,可根据需要设置。因此记账系统在每个周期内无需因为记账而对该账户写锁,而线程也无需对账户进行记账操作,如表1所示。表1在表1中,可见记账系统中的不同的线程,可根据不同的记账请求,确定针对账户a的若干记账明细,并存储在数据库中。并在每个周期结束时,由记账系统对该账户写锁,并根据数据库中存储的各记账明细的,确定该账户的余额并进行调整。以及将各记账明细对应的该账户的余额变动情况进行补记。其中,对账户的余额调整以及将记账明细进行补记的过程可以是异步进行的。另外,在该账户的余额并进行调整时,记账系统是根据各记账明细,确定各记账明细对应的总记账结果,以根据总记账结果调整账户的余额。例如,假设分别存在记账明细收入100元,支出10元以及支出20元,则记账系统可确定总记账结果为收入70元。但是,现有缓冲记账的记账方法,由于在调整账户余额之前,无法确定周期内各记账明细的总记账结果,所以存在账户透支的风险。所以一般需要根据人工经验预先判断需要配置以及可以配置缓冲记账的账户,使得现有缓冲记账的记账方法在配置时不够灵活,且依赖人工经验,存在风险。可见,现有技术的各种记账方法,在面对高并发的交易业务时,仍存在多个方面的缺陷。因此,本说明书提供一种新的记账方法。
技术实现思路
本说明书实施例提供一种记账的方法及装置,用于解决现有技术的各种记账方法,在面对高并发的交易业务时,需要提前配置缓冲记账的账户,配置的参数也需要依靠人工经验,存在多个方面缺陷的问题。本说明书实施例采用下述技术方案:一种记账的方法,包括:针对接收到的每个记账请求,确定该记账请求针对的账户;当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储;当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时,根据该记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储。一种记账的装置,包括:请求确定模块,针对接收到的每个记账请求,确定该记账请求针对的账户;记账以及存储模块,当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储;所述记账以及存储模块,当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时,根据该记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储。一种服务器,其中,所述服务器包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:针对接收到的每个记账请求,确定该记账请求针对的账户;当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储;当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时,根据该记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:通过本说明书提供的方法及装置,针对接收到的每个记账请求,先确定该记账请求针对的账户。之后,可先判断是否存在与该记账请求属于同一事务且针对同一账户的待处理的记账请求。若不存在,则可根据该记账请求是否需要扣除该账户的余额,确定是否可将该记账请求作为待处理记账请求进行存储。而若存在,则需要根据该记账请求以及待处理的记账请求,确定是否可将该记账请求作为待处理记账请求进行存储。也就是说,如果存在若干待处理的记账请求不需要扣除账户的余额,则可在不能获取到账户的资源锁时,先将待处理的记账请求进行存储,而无需排队等待记账操作。使得当事务并发率较高时,记账操作更加灵活,同时保证了账户不会出现风险。并且,无需人工对账户进行配置,使得记账操作的效率提高风险降低。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本说明书实施例提供的一种记账的过程;图2为本说明书实施例提供记账的详细过程的示意图;图3为本说明书实施例提供的另一种记账的详细过程的示意图;图4为本说明书实施例提供的一种记账的装置的结构示意图;图5为本说明书实施例提供的一种服务器的结构示意图。具体实施方式为使本说明书的本文档来自技高网
...

【技术保护点】
1.一种记账的方法,包括:针对接收到的每个记账请求,确定该记账请求针对的账户;当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储;当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时,根据该记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储。

【技术特征摘要】
1.一种记账的方法,包括:针对接收到的每个记账请求,确定该记账请求针对的账户;当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储;当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时,根据该记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,将该记账请求作为待处理的记账请求进行存储。2.如权利要求1所述的方法,判断是否需要扣除所述账户的余额之前,所述方法还包括:根据该记账请求,确定记账明细并存储,其中所述记账明细中包括对所述账户进行记账操作的金额。3.如权利要求2所述的方法,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,具体包括:根据存储的所述待处理的记账请求的记账明细,以及该记账请求的记账明细,确定该记账请求以及所述待处理的记账请求的明细总额;判断所述明细总额的支出是否大于收入。4.如权利要求1所述的方法,所述记账请求对应的记账操作的操作类型包括:冻结、解冻、流出以及流入中的一种。5.如权利要求4所述的方法,根据该记账请求,判断是否需要扣除所述账户的余额,具体包括:确定该记账请求的操作类型;判断所述操作类型是否是流入操作类型以外的其他操作类型。6.如权利要求1所述的方法,当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时;获取所述账户的资源锁,进行记账操作,具体包括:获取所述账户的资源锁,并根据该记账请求以及所述未处理的记账请求,对所述账户进行记账操作。7.如权利要求1所述的方法,当与该记账请求属于同一事务的其他记账请求中,不存在针对所述账户的待处理的记账请求时;获取所述账户的资源锁,进行记账操作,具体包括:获取所述账户的资源锁,并根据该记账请求对所述账户进行记账操作。8.如权利要求1所述的方法,当判断不需要扣除所述账户的余额,且获取到了所述账户的资源锁时,则根据该记账请求进行记账操作,或根据该记账请求以及所述待处理的记账请求进行记账操作。9.如权利要求1所述的方法,所述方法还包括:当所述事务结束之前,判断是否仍存储有针对所述账户的待处理的记账请求;若是,则获取所述账户的资源锁,并在根据已存储的若干针对所述账户的待处理的记账请求,进行记账操作之后,确定所述事务结束;若否,则确定所述事务结束。10.一种记账的装置,包括:请求确定模块,针对接收到的每个记账请求,确定该记账请求针对的账户;记账以及存储模块,当与该记账请求属于同一事务的其他记账请求中,存在针对所述账户的待处理的记账请求时,根据该记账请求以及所述待处理的记账请求,判断是否需要扣除所述账户的余额,若是,则获取所述账户的资源锁,进行记账操作,若否,则在不能获取所述账户的资源锁时,...

【专利技术属性】
技术研发人员:王磊
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1