巧用CAS解决数据一致性问题

  1. 云栖社区>
  2. 阿里云MVP>
  3. 博客>
  4. 正文

巧用CAS解决数据一致性问题

初商 2019-08-12 23:18:32 浏览232
展开阅读全文

缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。

一、业务场景

业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:

(1)从数据库查询用户现有余额 SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的$old_money=100元

image.png

(2)业务层实施业务逻辑,比如购买一个80元的商品,并且打九折

if($old_money> 80*0.9) $new_money=$old_money-80*0.9=28

image.png

(3)将数据库中的余额进行修改 UPDAtE t_yue SET money=$new_money WHERE uid=$uid

image.png

在并发量低的情况下,这个流程没有任何问题,原有金额100元,购买了80元的九折商品(72

网友评论

登录后评论
0/500
评论
初商
+ 关注
所属云栖号: 阿里云MVP