4.优惠券设计系统
分析
还是4s,首先是场景
场景
需求
- 发送优惠券
- 领取优惠券
- 使用优惠券

商家侧
- 新增优惠券
- 发送优惠券
用户侧
- 领取优惠券
- 下单
- 使用优惠券
- 支付
qps计算
按照点击次数,还有多少人,多少个优惠券
服务
传统的电商服务
- 订单服务
- 支付服务
+优惠券服务

存在的问题
- 分布式事务
- 超发送优惠券
- 防止重复领取
- 大批量发送优惠券(发红包类似)
storage
设计scheme
优惠券(包含多少张,什么规则,已经发送的,已经使用的)

规则表(什么规则)

用户领取表(用户id,还有券id,券的状态)

触达系统
就是推送系统,推送发圈的消息
消息(发送内容,from,to)
优化消息表,使用外键
大批量发券
使用消息队列进行解耦

出现重复消费的问题
使用事务来进行操作

更新优惠券还有领券信息
使用》0来进行更新的
重复领券
使用redis,sadd
1 |
语法是sadd key member
key是券的id,member是uid
直接查询
校验优惠券
下单的时候校验

校验内容
- 国企
- 是否符合一则
- 是否互斥


现在设计到多个系统,需要使用分布式事务,tcc来进行解决
加入新表,uid,表id,操作

扩展
过期提醒
三种策略
- 定时扫表(影响业务)
- 延时消息(消息堆积)
- 新增通知表



All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


