如何解决并发场景下扣款的数据一致性问题

场景介绍

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

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

场景举例

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

时间线

业务1

业务2

T1

从数据库中查询余额为

T2

从数据库中查询余额为

T3

计算消费金额后的余额例如50

T4

计算消费金额后的余额例如60

T5

更新数据库余额为50

T6

更新数据库余额为60

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

解决方案

(1)分布式锁

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

分布式锁参考:









































白癜风医院济南哪家好
白癜风医院兰州哪家好



转载请注明:http://www.92nongye.com/xxmb/204621675.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了