本发明涉及账务数据处理,具体涉及一种高效账务数据管理方法、系统及存储介质。
背景技术:
1、在编写并发程序时,其中一个主要的挑战是确保多个线程在共享资源上的正确协同工作。在某些情况下,可能需要保护共享资源,以防止多个线程同时修改它。这是通过使用锁来实现的。
2、传统的账务系统记账流程设计通常以账户为聚合根,先持有账户锁,再构建流水,然后进行资金处理,最后持久化操作。传统的账务系统记账流程设计会带来以下问题:
3、1、高并发性能下的效率问题:如果先持有账户锁,那么其他线程在进行并发操作时就需要等待锁的释放。这可能会导致并发性能下降,因为各个线程需要等待锁的释放才能继续执行。
4、2、死锁问题风险增加:当多个线程在持有锁的情况下,试图同时获取其他线程持有的锁时,可能会出现死锁情况。锁持久持有时间的增加,伴随着死锁风险的增加。
5、3、难以维护:在大规模代码中,正确处理锁的顺序可能变得非常复杂。如果需要持有多个锁,那么正确处理它们的顺序可能会变得非常困难。这可能导致代码的可维护性下降和错误的引入。
技术实现思路
1、本发明的目的之一在于提供一种高效账务数据管理方法,通过优化记账流程,减少数据库交互次数和账户锁的持有时间,提高了账务数据管理系统的性能和效率。
2、为了达到上述目的,提供了一种高效账务数据管理方法,包括以下步骤:
3、s1、接收到记账指令请求时,首先对记账指令请求进行验证;如果请求合法,继续下一步骤;
4、s2、根据记账指令进行幂等处理,如果触发幂等,流程结束;
5、s3、根据记账指令构建交易流水,并填充交易流水的账期和账户信息;
6、s4、根据账户唯一标识分别对交易流水进行分组轧差汇总,计算出当前交易需要动账金额;
7、s5、将交易流水插入数据库,持久化交易流水的数据;
8、s6、根据账户唯一标识对账户进行排序;
9、s7、排除不需要更新余额的账户,将需要更新余额的账户进行批量更新;通过判断数据库变更行数等于预期变更行数,确定记账是否成功。
10、进一步,所述步骤s1中,如果请求不合法或存在错误,及时返回错误信息,并回滚已构建的流水操作。
11、本发明的目的之二在于提供一种高效账务数据管理系统,所述系统包括以下模块:
12、记账指令接收及验证模块:用于接收到记账指令请求时,首先对记账指令请求进行验证;如果请求合法,继续下一步;
13、幂等处理模块:用于根据记账指令进行幂等处理,如果触发幂等,流程结束;
14、交易流水构建模块:用于根据记账指令构建交易流水,并填充交易流水的账期和账户信息;
15、分组轧差汇总模块:用于根据账户唯一标识分别对交易流水进行分组轧差汇总,计算出当前交易需要动账金额;
16、持久化交易模块:用于将交易流水插入数据库,持久化交易流水的数据;
17、账户排序模块:用于根据账户唯一标识对账户进行排序;
18、账户余额更新模块:用于排除内存中不需要更新余额的账户,将需要更新余额的账户进行批量更新;通过判断数据库变更行数等于预期变更行数,确定记账是否成功。
19、进一步,所述记账指令接收及验证模块中,如果请求不合法或存在错误,及时返回错误信息,并回滚已构建的流水操作。
20、本发明的目的之三在于提供一种计算机可读存储介质,所述计算机可读存储介质中包括高效账务数据管理程序,所述高效账务数据管理程序被处理器执行时,实现所述的高效账务数据管理方法的步骤。
21、原理及优点:
22、1、数据一致性:通过在持有账户锁之前构建流水,可以确保账户数据的一致性和准确性。避免并发操作导致的数据冲突和错误。
23、2、错误回滚机制:在账务请求验证过程中,如果发现请求不合法或存在错误,可以及时返回错误信息,并回滚已构建的流水操作。避免错误数据的持久化产生不可逆的后果。
24、3、并发性能提升:通过先构建流水再持有账户锁的方式,可以减少对账户锁的争用和等待,从而提升系统的并发性能
25、4、减少了数据库交互次数:通过将账户流水作为聚合根,减少了对账户的频繁读写操作,降低了数据库交互的次数,提升了系统的性能和效率。
26、5、提高了数据处理的准确性和实时性:通过内存操作和数据库交互的组合,确保了数据的准确性和实时性,提升了系统的数据处理能力
27、6、简化了系统架构:通过优化记账流程,减少了系统中的冗余操作,简化了系统的架构,提高了系统的可维护性和可扩展性。
28、7、避免死锁风险:通过更新账户数据的排序处理,有效预防死锁风险。
1.一种高效账务数据管理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种高效账务数据管理方法,其特征在于:所述步骤s1中,如果请求不合法或存在错误,及时返回错误信息,并回滚已构建的流水操作。
3.一种高效账务数据管理系统,其特征在于:所述系统包括以下模块:
4.根据权利要求3所述的一种高效账务数据管理系统,其特征在于:所述记账指令接收及验证模块中,如果请求不合法或存在错误,及时返回错误信息,并回滚已构建的流水操作。
5.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质中包括高效账务数据管理程序,所述高效账务数据管理程序被处理器执行时,实现如权利要求1至2中任一项所述的高效账务数据管理方法的步骤。