微信抢红包设计
- 包几个红包,发红包的总金额
- 塞钱进红包,弹出支付的界面,支付完之后就会被发到 群里
- 抢
- 拆红包,才是真正的抢红包
红包金额怎么分配
- 每个人至少抢到1分钱
- 人数抢到的金额之和就应该是红包的总金额
- 一个人抢的红包不应该极度的大,例如发了100,有一个人抢了99.5
红包金额预分配
假设100元,5个人抢,怎么抢,每个人应该多少钱?因为肯定是微服务的架构,第一时间想到的肯定是分布式锁,但是在这么高的并发下,分布式锁一定会严重影响性能。
我们可以在支付红包的时候,就把每个人的金额都算出来,然后放入队列中。抢的时候从队列中取就可以了,就不存在并发的问题了。
hash的作用是,我们抢完红包之后,要看每个人抢了多少钱,比方说ls抢了3元,zs抢了4元,
rp是red package,188是红包的id