优惠券系统业务思想
优惠券模板(template) 微服务思想
根据运营人员设定的条件构造优惠券模板。管理人员负责生成优惠券,用户负责使用优惠券。
这里条件大概包括:
- 名称
- logo
- 产品线
- 分类
- 数量
- 规则
- 。。。
核心思想
优惠券的生成是异步+优惠券码的方式。使用异步生成是因为优惠券生成需要耗费一定时间。
要求
- 优惠券必须有数量限制。
- 优惠券(分发)必须有优惠券码。
优惠券码
- 不可以重复
- 有一定识别性
这里采用的方式是
产品线+类型(前四位)——日期随机(取日期中间六位)+0-9的随机八位数
总共18位。
核心实现技术
给优惠券模板生成“优惠券码”并保存在 redis 中。
优惠券码是在一个服务实例中预先生成的,并放在了 redis (list) 中,这样做有下面的好处
- 简单解决优惠券码的一致性问题(Set 数据结构),避免了多线程并发的问题。
- 不会造成优惠券的超发
- 不需要考虑优惠券分发时配额的问题。
这里其实就是静态生成方式。还有一种是动态生成,就是用户需要使用时进行生成。
优惠券模板过期清理
两种过期策略
- template 模板自己决定清理频率,定时清理(主动清理)
- 使用 template 模块其他模块进行校验(因为策略1存在延迟,这是被动清理方式)