Spring事物注解@Transactional与代码锁冲突原因分析
业务场景如下:
用户频繁(疯狂)点击送礼物按钮给主播刷礼物
代码实现业务步骤:
1.查询礼物金额
2.查询用户钱包金额
3.查询钱包余额是否充足
4.用户钱包减去礼物金额
5.主播钱包增加礼物金额
代码方案:
1.因为涉及金额问题,且操作中需要对用户和主播的钱包都进行相应操作,所以需要使用@Transactional事物注解。
2.因用户频繁点击场景,为了防止用户钱包余额校验等金额问题出现异常,需要使用分布式锁或synchronized单机锁进行安全处理。
为什么要设计的这么严格:如果
原创
2021-02-09 15:01:21 ·
685 阅读 ·
0 评论