前提高并发场景,参与用户在千万级,优惠券总数量假设为一百万每天固定时间段开放抢优惠券活动(假设20:00~22:00),持续一周(所以每天2小时共发放约13万张,每小时6.5万张)要求在每天的2个小时时间内,要求优惠券尽量平滑地发放,也就是说,不能前半小时就把13万张优惠券给发完了,要让后来的用户仍然能够有机会得到优惠券,并且活动时间内不管什么时候来,获得优惠券的几率尽量一致。请问要如何设计这样的算法?望大神不吝赐教!
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
我觉得你可以把优惠券放到redis里,一天发放多少,计算好数量和时间间隔,用户请求时候按照时间戳随机发给其中一个人或几个人。得不到优惠券的要给个友好提示。其实这个感觉还是不好控制,因为网站有些时段访问人多,有些时段访问人少,本身也不均匀,均匀发放势必导致发不完和领不到的情况。不如设置时段发放数量,让大家去抢。反正每个时间段都有优惠券,这样还可以让网站整天都保持较高访问。个人愚见
添加回答
举报
0/150
提交
取消