我是靠谱客的博主 感性汽车,最近开发中收集的这篇文章主要介绍干货!实战!你领取的优惠券都是怎么样实现的?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目背景

一个电商(app和PC端)项目,一般在特殊的节日都会做有一些促销和优惠活动,一般都是采用发放优惠券或者满减,如果平台用户量不大f,发放优惠券一切正常,当有千万级或者亿级别的用户量,再发放福利用户领取优惠券时,如果不对领取优惠券接口进行高并发的处理,当流量洪峰瞬间请求时,就会出现接口挂掉不能进行领优惠券或者优惠券超发,更严重情况会导致整个服务宕机,那你可以投简历准备下一份工作了,那怎么样解决呢?

一般的解决方案
1.使用分布式锁,使用key=业务编号+活动Id+优惠券Id

如何实现分布式锁:分布式锁的代码实现

2.使用mysql事务进行控制

备注:这种适合于中小型的公司使用,用户量百万完全没有问题,但是整体的性能不是更优。

更优方案
1.验证公共化前置,不使用锁操作
2.基于redis防止用户重新领券,使用hset结构进行存储
key=业务编号+活动Id+优惠券Id+商户Id
3.对库存扣减 使用redis+lua进行扣减库存
4.扣减成功发MQ消息

备注:适合于大厂互联网公司进行使用,目前这套方案支持过亿的用户量。

整体流程如下图所示:

在这里插入图片描述

最后

以上就是感性汽车为你收集整理的干货!实战!你领取的优惠券都是怎么样实现的?的全部内容,希望文章能够帮你解决干货!实战!你领取的优惠券都是怎么样实现的?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部