先查询后修改并发的时候sql_如何解决并发场景下扣款的数据一致性问题?

e2f0c656832f4a11d0bcd03bac96ad1d.png

1、场景介绍

场景1:扣费,企业账户送流量或者红包,用户签到领取。此场景下就是多用户对某一个账号的并发扣款;

场景2:充值,打赏给主播,这种场景是多用户对同一个账号进行打款,但是方案和问题和场景1是一致的。

2、场景举例

假设有两个业务操作同一个账号,账号余额为100,业务1扣除50,业务2扣除40,如果顺利应该是剩余100-50-40=10,那么我们看如下并发操作的场景:

adb2e423a139b8b3545d7f70c10a40f7.png

通过两个业务的并发操作,最后账户余额为60(是业务2最后修改后的余额值)。

3、解决方案

3.1 分布式锁

由于是分布式环境,采用分布式锁可以保证数据一致性,但是这是小概率事件,并且引入新组件(redis/zk),还会降低吞吐量。

分布式锁参考:https://blog.csdn.net/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值