现在有一个账户钱包变动记录表,这种有必要用队列实现么?
多谢各位指点,我写了个简单的demo欢迎指点:https://github.com/liuzhongsh...
消息队列:解耦、削峰、异步
这3大场景你可以思考一下用不用的到,有没有必要用
消息队列里的数据是用来消费的,消费完还是要存到库里做持久化。
有没有必要用,得看你们具体的使用场景。
###像这种时效性要求不高的操作,是可以使用队列,但是引入队列会增大系统的复杂性,而且引入了消息系统必定会需要对数据做幂等性,对于钱包变动表这种敏感信息,流水对不上对用户影响会非常大的,如果用户流水变动不是非常频繁,可以不需要队列操作
###如楼上所言,消息队列的数据最终还是需要进行持久化处理了,更不用说 账户钱包变动记录表
这种资金数据,最终还是需要入库的,但是需要考虑一个问题,就是在 入库 和 消耗 会有个时间差。
场景:
- 用户 A 有帐户有 10 元
- 消息队列有 10 条记录待消耗,每条需要将帐户减 1 元
- 队列消耗了 7 条,那么余额还有 3 元
- 此时购买某个价值 2 元的商品
那这个时候用记可以继续购买么?
A. 如果可以购买,余额可能为负数
B. 入队列消耗,余额不足时提示失败,影响用户体验
当然这个问题可以使用其它方式来解决,不过不在本次讨论范围之内
可以使用队列异步处理,带来的后果是不能即时反馈用户,如果你的场景是需要对用户即时反馈(yes/no),建议有限度的使用或者使用其他方案