一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于redis记录热点账户金额的方法及装置与流程

2022-12-07 03:22:42 来源:中国专利 TAG:

技术特征:
1.一种基于redis记录热点账户金额的方法,包括用于记录账户金额的账户表balance_accts、用于记录账户交易明细的账户明细表balance_txns,其特征在于,包括以下步骤:步骤1、交易模块接收到交易报文后,对交易报文先进行业务校验,交易报文校验通过后,根据交易报文记录交易记录,然后将交易的交易信息发往账户模块交易信息包括收款账户类型、付款账号、金额。步骤2、账户模块根据账户类型判断是否是热点账户,如是不是热点账户,采用分布式锁对账户进行加锁,然后进行账户记账,记账结束,如是热点账户,则采用redis缓存进行记账,将交易明细插入到账户明细表记录balance_txns中,进行步骤3;步骤3、启动一个定时任务,根据账户明细表记录balance_txns对热点账户的账户表balance_accts的金额进行更新。2.根据权利要求1所述的一种基于redis记录热点账户金额的方法,其特征在于,步骤2包括:步骤2.1、账户类型不是热点账户,则使用分布式锁来排队,避免账户表balance_accts并发冲突,分布式锁超时时间ns,等待的交易记账请求等待ns,ns后没获得锁就返回记账失败结果到交易模块,交易失败,如果获得锁则操作账户表balance_accts对账户金额做对应的加减,并且新增账户明细表记录balance_txns,操作成功后返回记账成功结果到交易模块;步骤2.2、账户类型是热点账户,根据账户去查redis中是否有该账户的金额key,如果有则将金额key取出来,对账户金额做对应的加减,并写回到redis中,如果redis中没有账户的金额key就根据当前从数据库的账户表balance_accts查出来的金额初始化到redis;步骤2.3、接步骤2,2,在热点账户金额变动后的值存储到redis后,将账户的交易明细存在账户明细表balance_txns,账户明细表balance_txns包含一个标记字段is_counted,来标识热点账户是否已统计计算到账户表balance_accts中,热点账户is_counted值为0,非热点账户is_counted值为1。3.根据权利要求1所述的一种基于redis记录热点账户金额的方法,其特征在于,步骤3包括:在后台启动一个定时任务,从balance_txns表中按账户记录的明细时间顺序取出is_counted=0的数据,按账户按时间顺序累加到数据库表balance_accts,每一条账户明细累计后更改is_counted=1,此时热点账户数据库表balance_accts中的金额的更新。4.根据权利要求2所述的一种基于redis记录热点账户金额的方法,其特征在于,步骤2.1中ns取值为10s,即10秒。5.根据权利要求1所述的一种基于redis记录热点账户金额的方法,其特征在于,还包括步骤4,,接步骤3,为检查账户表balance_accts中的金额是否和redis中的一致,在后台启动一个定时任务,每天凌晨跑一次,检查每个电子账簿redis中的金额和账户表balance_accts与balance_txns中is_counted=0的金额是否一致,如果不一致就发出告警短信,通知运管人员,运管人员可以通过后管以账户表balance_accts中 balance_txns中is_counted=0的金额重置redis中的金额。这样保证了redis和数据库金额的最终一致性。6.一种基于redis记录热点账户金额的装置,包括用于记录账户金额的账户表balance_accts、用于记录账户交易明细的账户明细表balance_txns,其特征在于,包括:
业务校验模块、交易模块接收到交易报文后,对交易报文先进行业务校验,交易报文校验通过后,根据交易报文记录交易记录,然后将交易的交易信息发往账户模块交易信息包括收款账户类型、付款账号、金额。账户模块、根据账户类型判断是否是热点账户,如是不是热点账户,采用分布式锁对账户进行加锁,然后进行账户记账,记账结束,如是热点账户,则采用redis缓存进行记账,将交易明细插入到账户明细表记录balance_txns中;定时任务模块:根据账户明细表记录balance_txns对热点账户的账户表balance_accts的金额进行更新。7.根据权利要求6所述的一种基于redis记录热点账户金额的方法,其特征在于,账户模块实现包括以下步骤:步骤2.1、账户类型不是热点账户,则使用分布式锁来排队,避免账户表balance_accts并发冲突,分布式锁超时时间ns,等待的交易记账请求等待ns,ns后没获得锁就返回记账失败结果到交易模块,交易失败,如果获得锁则操作账户表balance_accts对账户金额做对应的加减,并且新增账户明细表记录balance_txns,操作成功后返回记账成功结果到交易模块;步骤2.2、账户类型是热点账户,根据账户去查redis中是否有该账户的金额key,如果有则将金额key取出来,对账户金额做对应的加减,并写回到redis中,如果redis中没有账户的金额key就根据当前从数据库的账户表balance_accts查出来的金额初始化到redis;步骤2.3、接步骤2.2,在热点账户金额变动后的值存储到redis后,将账户的交易明细存在账户明细表balance_txns,账户明细表balance_txns包含一个标记字段is_counted,来标识热点账户是否已统计计算到账户表balance_accts中,热点账户is_counted值为0,非热点账户is_counted值为1。8.根据权利要求1所述的一种基于redis记录热点账户金额的装置,其特征在于,定时任务模块:在后台启动一个定时任务,从balance_txns表中按账户记录的明细时间顺序取出is_counted=0的数据,按账户按时间顺序累加到数据库表balance_accts,每一条账户明细累计后更改is_counted=1,此时热点账户数据库表balance_accts中的金额的更新。9.根据权利要求7所述的一种基于redis记录热点账户金额的装置,其特征在于,步骤2.1中ns取值为10s,即10秒。10.根据权利要求1所述的一种基于redis记录热点账户金额的装置,其特征在于,还包括容错模块,为检查账户表balance_accts中的金额是否和redis中的一致,在后台启动一个定时任务,每天凌晨跑一次,检查每个电子账簿redis中的金额和账户表balance_accts与balance_txns中is_counted=0的金额是否一致,如果不一致就发出告警短信,通知运管人员,运管人员可以通过后管以账户表balance_accts中 balance_txns中is_counted=0的金额重置redis中的金额。这样保证了redis和数据库金额的最终一致性。

技术总结
本发明涉及互联网分布式微服务架构领域,提供了一种基于redis记录热点账户金额的方法及装置。本发明的目的在于解决支持热点账户记账高并发,高性能的问题。主要方案包括交易模块接收到交易报文后,对交易报文先进行业务校验,交易报文校验通过后,根据交易报文记录交易记录,然后将交易的交易信息发往账户模块交易信息包括收款账户类型、付款账号、金额。账户模块根据账户类型判断是否是热点账户,如是不是热点账户,采用分布式锁对账户进行加锁,然后进行账户记账,记账结束,如是热点账户,则采用redis缓存进行记账,将交易明细插入到账户明细表记录balance_txns中;启动一个定时任务,根据账户明细表记录balance_txns对热点账户的账户表balance_accts的金额进行更新。户的账户表balance_accts的金额进行更新。户的账户表balance_accts的金额进行更新。


技术研发人员:程峰 李耀 彭磊 曾令华 叶晓华
受保护的技术使用者:武汉众邦银行股份有限公司
技术研发日:2022.08.16
技术公布日:2022/12/5
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献