优惠券分发系统-学习笔记-第六章

优惠券系统业务思想

优惠券模板(template) 微服务思想

根据运营人员设定的条件构造优惠券模板。管理人员负责生成优惠券,用户负责使用优惠券。
这里条件大概包括:

  • 名称
  • logo
  • 产品线
  • 分类
  • 数量
  • 规则
  • 。。。

核心思想

优惠券的生成是异步+优惠券码的方式。使用异步生成是因为优惠券生成需要耗费一定时间。

要求

  1. 优惠券必须有数量限制。
  2. 优惠券(分发)必须有优惠券码。

优惠券码

  • 不可以重复
  • 有一定识别性

这里采用的方式是
产品线+类型(前四位)——日期随机(取日期中间六位)+0-9的随机八位数
总共18位。

核心实现技术

给优惠券模板生成“优惠券码”并保存在 redis 中。
优惠券码是在一个服务实例中预先生成的,并放在了 redis (list) 中,这样做有下面的好处

  • 简单解决优惠券码的一致性问题(Set 数据结构),避免了多线程并发的问题。
  • 不会造成优惠券的超发
  • 不需要考虑优惠券分发时配额的问题。

这里其实就是静态生成方式。还有一种是动态生成,就是用户需要使用时进行生成。

优惠券模板过期清理

两种过期策略

  1. template 模板自己决定清理频率,定时清理(主动清理)
  2. 使用 template 模块其他模块进行校验(因为策略1存在延迟,这是被动清理方式)