系统架构最佳实践 -- 一般优惠券思想和方案

1.优惠券系统的核心思想

默认的优惠券系统:根据运营人员设定的条件生成对应的优惠券模板、

  • 优惠券码的要求:唯一性和有一定的识别性
    优惠券码的格式(一共18位):产品线+类型(前四位)+日期随机码(中间六位)+0到9的随机数(后八位)
  • 优惠券异步生成:因为我们一次性可能会生成几万个优惠券,所以我们在后台创建的时候,进行异步处理(可以采用消息队列来实现)

2.技术方案

  • 通过优惠券模板生成优惠券码保存到redis,方便我们进行查询和处理数据
  • 优惠券在一个实例服务生成:这样做的目的是解决优惠券码一致性的问题(我们在代码中使用Set数据结构生成),这样的做的好处是不会造成优惠券码的超发和分发优惠券配额问题

3.优惠券过期问题

优惠券具有时间属性,如果优惠券过期了,则不可使用,因此系统需要能够定期清除过期的优惠券,目前有两种方式;

  • 第一种方式是使用定时器定时扫描redis存储的优惠券数据,如果失效了,则进行清除;
  • 第二种是除了定时器以外的模块进行清除,比如客户端在请求优惠券列表的时候,我们可以先对优惠券列表进行遍历,如果过期了,这进行处理

4.优惠券结算(核销功能)

优惠券在使用的时候,我们需要判断优惠券的可用性

  • 结算的时候需要判断优惠券是否合法,判断优惠券是否过期和该用户是否是系统内部的用户
  • 通过不同的优惠券组合计算出最终的价格
  • 如果(核销优惠券)支付成功,这需要会写数据,更改优惠券状态
相关推荐
大咖分享课33 分钟前
架构性能优化三板斧:从10秒响应到毫秒级的演进之路
性能优化·架构
echoyu.2 小时前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
程序猿阿伟2 小时前
《云原生微服务治理进阶:隐性风险根除与全链路能力构建》
微服务·云原生·架构
小马哥编程3 小时前
【软考架构】第五章 软件工程基础知识:5.1软件工程概述
架构·软件工程
一直_在路上4 小时前
Go项目实战案例解析】:以Go语言之道,构建电商高并发架构
后端·架构
一直_在路上4 小时前
Go语言并发编程架构师指南:从基础到企业级实战
后端·架构
车口4 小时前
一套代码实现表单新增,编辑和预览
架构
Light605 小时前
架构矩阵实战:业务边界×技术分层的双螺旋落地法
架构·业务模块·ai 原生·架构矩阵·技术分层·契约治理
文火冰糖的硅基工坊6 小时前
[硬件电路-166]:Multisim - SPICE与Verilog语言的区别
系统架构·电路·跨学科融合
文火冰糖的硅基工坊6 小时前
[光学原理与应用-449]:量子光学 - 量子光学研究的是单个光子的行为、传播特性、物质相互作用及其应用
系统架构·量子计算·光学·激光器·跨学科融合