System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 实时扣费方法、装置、电子设备及存储介质制造方法及图纸_技高网

实时扣费方法、装置、电子设备及存储介质制造方法及图纸

技术编号:40052435 阅读:6 留言:0更新日期:2024-01-16 21:25
本公开提供了一种实时扣费方法,包括以下步骤:生成第一扣费事务;根据第一扣费事务,生成未结算订单;根据未结算订单,在缓存更新第一余额值;若更新第一余额失败,回滚未结算订单;结束第一扣费事务;生成第二扣费事务;根据所有的未结算订单,在数据库更新第二余额值;若更新第二余额失败,回滚第二扣费事务;结束所有的未结算订单;若结束所有的未结算订单失败,回滚第二扣费事务;结束第二扣费事务。本公开还提供了一种实时扣费系统、电子设备及可读存储介质。

【技术实现步骤摘要】

本公开涉及一种实时扣费方法、装置、电子设备及存储介质


技术介绍

1、在现代的互联网应用中,高并发下的实时计费是一个常见的话题,其既简单又复杂,简单是因为,从业务的角度上,它大多数时候就是提供一个账户余额信息,使用即扣余额,充值即加余额。之所以复杂,是因为在分布式高并发场景下的性能上需要考虑很多。

2、为提升性能,目前主要有以下几种方案:1.在操作账户余额的过程中添加分布式锁,来保证账户余额的一致性;2.采用cas原则实现乐观锁,使用版本号字段作为乐观锁版本标识,每次修改记录时,版本号加一,如果修改时版本号小于当前版本好,则修改失败;3.采用redis缓存技术,将账户余额放在缓存中进行操作,再异步持久化到数据库。第一种方案,悲观锁避免了扣减时账户余额不一致的风险,但是需要全程锁定该操作的所有资源,会阻塞其他线程,导致扣款业务吞吐率低。第二种方案,虽然容易实现,但在高并发量额度场景下,会频繁的扣费失败,严重影响用户的使用体验。第三种方案使用缓存技术,可以大大的提高并发量,但是redis不具备事务特性,极端情况下,数据无法回滚,从而导致数据不一致。


技术实现思路

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.一种实时扣费方法,其特征在于,包括以下步骤:

2.如权利要求1所述的实时扣费方法,其特征在于,在缓存更新第一余额值,包括:

3.如权利要求2所述的实时扣费方法,其特征在于,根据所述第二余额值,生成所述第一余额值,包括:

4.如权利要求1所述的实时扣费方法,其特征在于,生成第二扣费事务,包括:定时生成所述第二扣费事务。

5.如权利要求1所述的实时扣费方法,其特征在于,还包括以下步骤:

6.如权利要求5所述的实时扣费方法,其特征在于,在缓存更新第一余额值,结束所述充值事务,包括:

7.如权利要求1所述的实时扣费方法,其特征在于,根据所有的所述未结算订单,在数据库更新第二余额值,包括:

8.一种实时扣费装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括:

10.一种可读存储介质,其特征在于,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现权利要求1至7中任一项所述的实时扣费方法。

【技术特征摘要】

1.一种实时扣费方法,其特征在于,包括以下步骤:

2.如权利要求1所述的实时扣费方法,其特征在于,在缓存更新第一余额值,包括:

3.如权利要求2所述的实时扣费方法,其特征在于,根据所述第二余额值,生成所述第一余额值,包括:

4.如权利要求1所述的实时扣费方法,其特征在于,生成第二扣费事务,包括:定时生成所述第二扣费事务。

5.如权利要求1所述的实时扣费方法,其特征在于,还包括以下步骤:

6.如权利要求...

【专利技术属性】
技术研发人员:孙龙根皮永驰赵玉亮
申请(专利权)人:上海墨百意信息科技有限公司
类型:发明
国别省市:

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

1