System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于消息中间件与分布式锁的异构记账方法及系统技术方案_技高网

一种基于消息中间件与分布式锁的异构记账方法及系统技术方案

技术编号:41132220 阅读:6 留言:0更新日期:2024-04-30 18:02
本发明专利技术属于会计记账技术领域,提供一种基于消息中间件与分布式锁的异构记账方法及系统。所述方法包括:根据支付业务属性生成记账凭证,并写入数据库中进行保存;基于记账凭证中的账户编号获取分布式锁,更新账户余额信息后将记账凭证推送至消息中间件中进行消费,并将记账凭证的记账状态更新为记账中;查询记账规则,通过记账规则对会计系统中的会计账户进行更新;修改会计记账信息的最终状态并通知账户系统,完成记账。本发明专利技术通过把记账凭证异步发送到消息中间件中进行消费处理,有效实现会计记账与业务处理的解耦,同时采用分布式锁来保证数据的幂等性,能够提高业务处理性能,缩短账务处理时间。

【技术实现步骤摘要】

本专利技术涉及会计记账,特别涉及一种基于消息中间件与分布式锁的异构记账方法及系统


技术介绍

1、支付系统是管理财务数据,为企业金融业务提供支持的平台。在现有支付系统的架构中,会计记账和业务处理通常采用同步串行处理,并通过数据库锁来保证数据的幂等性;此种处理方式使会计记账与业务处理紧密耦合,因而存在着以下问题:

2、(1)高并发情况下,热点账户的数据操作会使业务处理过程中产生锁竞争,从而导致业务处理性能低下,耗时较长;

3、(2)因会计记账和业务处理采用同步串行处理方式,当业务处理性能低下时,会计记账速度也随之降低,从而影响支付系统的整体效率,客户满意度欠佳。

4、因此,我们需要开发出一种基于消息中间件与分布式锁的异构记账方法及系统,能够使会计记账与业务处理进行解耦,缩短账务处理时间,提高业务处理性能;同时摒弃数据库锁,保证支付系统整体在高并发情况下也能维持高效率的工作状态,提升客户满意度。


技术实现思路

1、本专利技术的目的在于提供一种基于消息中间件与分布式锁的异构记账方法及系统,以解决上述
技术介绍
中提到的现有支付系统架构业务处理性能不高,耗时较长以及客户满意度欠佳的问题。

2、为实现上述目的,本专利技术采用以下技术方案:

3、根据本专利技术的一个方面,提供一种基于消息中间件与分布式锁的异构记账方法,所述方法具体步骤如下:

4、根据支付业务属性生成记账凭证,并写入数据库中进行保存;

5、基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;

6、将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;

7、查询记账规则,通过所述记账规则对会计系统中的会计账户进行更新;

8、修改会计记账信息的最终状态并通知账户系统,完成记账。

9、根据本专利技术的一个方面,提供一种基于消息中间件与分布式锁的异构记账系统,所述系统包括:凭证生成模块、账户操作模块、凭证消费模块、记账处理模块以及记账完成模块。其中:

10、上述凭证生成模块,用于根据支付业务属性生成记账凭证,并写入数据库中进行保存;

11、上述账户操作模块,用于基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;

12、上述凭证消费模块,用于将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;

13、上述记账处理模块,用于查询记账规则,通过所述记账规则对会计系统中的会计账户进行更新;

14、上述记账完成模块,用于修改会计记账信息的最终状态并通知账户系统,完成记账。

15、基于前述方案,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的,具体过程为:

16、检查分布式锁是否处于闲置状态;

17、若否,则等待获取所述分布式锁;

18、若是,则根据所述记账凭证中的账户编号获取所述分布式锁,并对相应账户进行加锁处理;

19、对加锁处理后的账户余额进行增减操作,更新账户余额信息;

20、将更新后的账户余额信息写入数据库中进行保存,释放所述分布式锁。

21、基于前述方案,账户操作完成后,将根据支付业务属性生成的记账凭证推送至消息中间件中进行消费,并在消费成功后将所述记账凭证的记账状态更新为记账中,其过程具体包括:

22、所述消息中间件监听是否有需要消费的记账凭证;

23、若有,则接收所述记账凭证并进行消费;生成会计记账信息与会计记账明细信息后写入数据库中进行保存;

24、查看所述记账凭证是否消费成功;

25、若失败,则将所述记账凭证回滚至消息队列中,等待下次业务执行时重新消费;

26、若成功,则向账户系统发送所述记账凭证消费成功的通知,并将所述记账凭证的记账状态更新为记账中。

27、基于前述方案,生成会计记账明细信息后,将所述会计记账明细信息按照账户进行分类,并将分类好的会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。其中,所述消息中间件的各消息分区中的消费处理是同步进行的。

28、基于前述方案,根据所述会计记账明细信息查询记账规则,并通过所述记账规则对会计系统中的会计账户进行更新,包括如下步骤:

29、检查分布式锁是否处于闲置状态;

30、若否,则等待获取所述分布式锁;

31、若是,则获取所述分布式锁并对所述会计系统中的会计账户进行加锁处理;

32、根据所述记账规则对所述会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后,更新所述会计账户和会计记账明细信息;

33、将所述会计分录信息、更新后的所述会计账户和所述会计记账明细信息写入数据库中进行保存,释放所述分布式锁。

34、基于前述方案,检查所述消息中间件的各消息分区中的所述会计记账明细信息是否均消费成功;若所述消息中间件的任一消息分区中存在消费失败,则需回滚当前失败的所述会计记账明细信息,等待重新消费;若所述会计记账明细信息均已消费成功,则将所述会计记账信息的最终状态修改为成功。

35、基于前述方案,将所述会计记账信息的最终状态修改为成功后,所述会计系统将向所述账户系统发送记账成功的通知;所述账户系统则根据所述会计记账信息的最终状态更改所述记账凭证的记账状态,并写入数据库中进行保存。

36、由上述技术方案可知,本专利技术与现有技术相比,至少具备以下优点和积极效果:

37、(1)本专利技术通过把记账凭证异步发送到消息中间件中进行消费处理,能够有效将会计记账与业务处理解耦,既不影响业务处理进程,也能提升会计记账的速度。

38、(2)本专利技术在记账处理过程中,将会计记账明细信息根据账户分类后分别推送至消息中间件的各消息分区中进行同步消费处理,不仅能缩短账务处理时间,提高会计记账效率,也能减少账务信息被漏处理、重复处理的情况。

39、(3)本专利技术采用分布式锁来保证数据的幂等性,既能实现不同线程之间的互斥访问,也能避免数据高并发情况下的锁竞争问题,从而提高了支付系统整体的工作稳定性,增加了客户满意度。

本文档来自技高网...

【技术保护点】

1.一种基于消息中间件与分布式锁的异构记账方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的异构记账方法,其特征在于,所述将所述记账凭证推送至消息中间件中进行消费,具体包括:

3.根据权利要求1所述的异构记账方法,其特征在于,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的。

4.根据权利要求1所述的异构记账方法,其特征在于,所述查询记账规则之前,还包括:将会计记账明细信息根据账户进行分类,并将分类好的所述会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。

5.根据权利要求1或2所述的异构记账方法,其特征在于,所述查询记账规则是根据所述会计记账明细信息来查询得到的。

6.根据权利要求1所述的异构记账方法,其特征在于,所述通过所述记账规则对会计系统中的会计账户进行更新,具体包括:

7.根据权利要求1或4所述的异构记账方法,其特征在于,所述修改会计记账信息的最终状态之前,还包括:

8.根据权利要求1所述的异构记账方法,其特征在于,所述完成记账之前还包括:所述账户系统根据所述会计记账信息的最终状态更改所述记账凭证的记账状态,并写入所述数据库中进行保存。

9.根据权利要求4所述的异构记账方法,其特征在于,所述消息中间件的各消息分区中的消费处理是同步进行的。

10.一种基于消息中间件与分布式锁的异构记账系统,其特征在于,包括:

...

【技术特征摘要】

1.一种基于消息中间件与分布式锁的异构记账方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的异构记账方法,其特征在于,所述将所述记账凭证推送至消息中间件中进行消费,具体包括:

3.根据权利要求1所述的异构记账方法,其特征在于,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的。

4.根据权利要求1所述的异构记账方法,其特征在于,所述查询记账规则之前,还包括:将会计记账明细信息根据账户进行分类,并将分类好的所述会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。

5.根据权利要求1或2所述的异构记账方法,其特征在于,所述查询记账规则是根据所述会计记账明细信...

【专利技术属性】
技术研发人员:杨瀚李江杨晓晋何当清汪日清
申请(专利权)人:深圳市雁联计算系统有限公司
类型:发明
国别省市:

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

1