礼物扣减和余额分成
来源:11-19 本章回顾

慕188764640
2024-02-14
老师想问一下我修改的方案可以么?
提前把用户余额从MySQL刷入到Redis中
然后在Redis中进行余额是否充足, 充足后进行余额扣减和给主播的余额分成,全部放入到lua脚本做.
然后在使用 mq的方式异步操作db(更新发送方和主播的余额)–>这里如果有必要的话加一个mq事务消息???
如果上面只要不成功(有可能余额不足,或者更新db出错了就回滚了),就不进行礼物扣减
梳理一下整体流程 :
- 在同步送礼物send接口做一下基本余额的同步校验(这里需要加个锁把(双重判定锁),如果余额不足我们直接返回),如果充足在发送到送礼物mq消费者
- mq消费方执行方法包括余额判断,扣减,分成,mq异步操作db(可能加个分布式事务会更好?)保证最终一致性
- 上面余额扣减和分成全部成功后,进行礼物的全直播间发送,
- 如果不成功可能出现了余额不足,或者mq异步操作db出错(一般不会出错) 我们并不进行后续逻辑(发送礼物,pk)…
还有一点没有整明白 :
5. 如果说提前把余额刷入到redis,好像不能使用定时任务把,还是像以前那样查询时同步到缓存?? ?
6. 在send接口进行同步校验那里需要加个双重判定锁不,如果余额不足直接返回,会不会吞吐量会下降??
老师不知道思考的对不 ? 具体真实场景下实际的方案应该是啥?因为这块写到简历上不讲明白就是坑啊,希望老师指导一下,谢谢老师
写回答
1回答
-
Danny_Idea
2024-02-15
用mq去异步持久化库存这种方式也可以。但是mq的消费端直接打到db上的时候要注意写入顺序和对db的压力。052024-02-15
相似问题