概述
项目背景
一个电商(app和PC端)项目,一般在特殊的节日都会做有一些促销和优惠活动,一般都是采用发放优惠券或者满减,如果平台用户量不大f,发放优惠券一切正常,当有千万级或者亿级别的用户量,再发放福利用户领取优惠券时,如果不对领取优惠券接口进行高并发的处理,当流量洪峰瞬间请求时,就会出现接口挂掉不能进行领优惠券或者优惠券超发,更严重情况会导致整个服务宕机,那你可以投简历准备下一份工作了,那怎么样解决呢?
一般的解决方案:
1.使用分布式锁,使用key=业务编号+活动Id+优惠券Id
如何实现分布式锁:分布式锁的代码实现
2.使用mysql事务进行控制
备注:这种适合于中小型的公司使用,用户量百万完全没有问题,但是整体的性能不是更优。
更优方案
1.验证公共化前置,不使用锁操作
2.基于redis防止用户重新领券,使用hset结构进行存储
key=业务编号+活动Id+优惠券Id+商户Id
3.对库存扣减 使用redis+lua进行扣减库存
4.扣减成功发MQ消息
备注:适合于大厂互联网公司进行使用,目前这套方案支持过亿的用户量。
整体流程如下图所示:
最后
以上就是感性汽车为你收集整理的干货!实战!你领取的优惠券都是怎么样实现的?的全部内容,希望文章能够帮你解决干货!实战!你领取的优惠券都是怎么样实现的?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复