你好 我是田哥
我的充电桩项目中,优惠券相关功能已基本完成。另外,关于充电桩项目,我之前分享过一些相关文章:
充电桩项目,开源啦!
充电桩项目实战:消息丢失和重复消费问题
用充电桩项目面试,成功上岸!
用充电桩项目面试,又又成功上岸!
充电桩项目实战:站内信的设计与实现
充电桩项目实战:消息丢失和重复消费问题
充电桩项目:秒杀超卖问题
充电桩项目:前端实现
充电桩项目实战:短信功能 分布式限流
物联网项目:充电桩项目实战~
从需求分析,到表结构设计,再到功能实现。
管理端
用户端
下面是优惠券的设计文档目录(文档中主要讲述一些功能的设计,怎么设计,为什么这么设计):
重点功能
优惠券相关功能中,核心功能有:
系统发放优惠券
用户领取优惠券
用户抢购优惠券(秒杀)
用户使用优惠券
优惠券过期处理
系统发放,比如系统给所有活跃用户发放普通优惠券,如何发?定时任务给用户生成一条优惠券领取记录?也不是不可以,但如果用户数到一定程度这种实现方式就不是理想的了。
用户领取优惠券,加入是积分兑换,如何保证积分扣除和领取优惠券的事务问题?还要生成优惠券变更记录。
用户抢购优惠券,如何保证优惠券不会超卖?
用户使用优惠券,如何保证支付操作(支付中心)和修改用户优惠券状态(营销中心)的分布式事务问题?
优惠券过期处理,如果用户领取优惠券相关数据量比较大如何实现?如果数据量小,那实现起来就简单。
这里只是罗列了一部分问题,项目也会继续优化,也欢迎大家一起探讨。
技术点
整个过程涉及到的核心技术有:
分布式事务
秒杀功能
分布式锁
消息不丢失
消息幂等
唯一优惠券编码
分布式缓存
其中,Redis作为本项目的分布式缓存中间件,用到string、list、map等数据类型。还用到了Redis+Lua脚本的结合。
关于充电桩项目的其他相关设计文档(文档总数已有40多个):
本项目属于知识星球实战项目之一。这个项目重点是在于练手,尤其是没有分布式项目经验,或在校大学生。
知识星球目前还是起步阶段,超级划算,每增加100人价格必须上涨。
很多人也非常关注追问试面试系列: