秒杀业务
1、秒杀价格(参考京东)
一、秒杀开始前,秒杀商品显示原价(涉及除秒杀活动页面外全部商品的显示页面,包括购物车、收藏、足迹等页面)
二、秒杀开始前,可使用原价购买商品
三、秒杀开始前,秒杀活动中的商品显示秒杀价,而非原价。进入商品详细可显示原价
四、秒杀开始后,秒杀商品显示秒杀价(全部商品显示页面)
五、秒杀结束后,秒杀商品恢复原价(涉及除秒杀活动页面外全部商品的显示页面,包括购物车、收藏、足迹等页面)
2、
秒杀库存(根据项目实际状况总结)
一、商品库存是以SKU为单位计量的,即每一个商品的每一个规格为最小库存计量单位
二、SKU秒杀库存和实际库存分开设置,如实际库存为50,秒杀库存可以使用<=50的任意一个值
三、因为秒杀开始前也能够购买商品,因此下单时应同时减小SKU的实际库存和秒杀库存,取消订单时如秒杀活动还在进行,也应该同时恢复实际库存和秒杀库存
四、相反的,秒杀商品生成订单后,SKU的秒杀库存和实际库存也应该同时减小,取消订单后同时恢复
五、应限制秒杀商品的购买数量,不然容易由于恶意下单致使库存不足
3、
秒杀活动
一、秒杀活动开始结束时间不能重叠(针对一个B端,若是有开发平台则每一个商户不能重叠)
二、秒杀活动的规则通常是:当天/未过时/开始时间最先的一条,若是须要同时显示多个秒杀活动,相似京东,则须要另外设计
三、秒杀活动的倒计时:在前台用js控制/开始前显示:离秒杀开始还剩00:00:00/开始后显示:离秒杀结束还剩:00:00:00
秒杀活动结束后,自动替换下一个秒杀活动,若是没有则不显示秒杀活动
四、秒杀活动通常时间范围为当天,不会跨天;时间精确到秒
五、可根据秒杀库存数、秒杀销售数在前端显示秒杀销售进度
六、秒杀活动表的基本设计
编号、活动名称、活动类型、开始时间、结束时间、是否有效、活动描述、建立时间、建立人、修改时间、修改人
秒杀商品
一、通常来讲,秒杀商品只须要设置秒杀价,但有些特殊的业务场景,好比某系统全部商品都是【价格+积分】的组合,那么秒杀商品一般也须要设置【秒杀价格+秒杀积分】
二、选择秒杀商品时应将其相关信息列举清晰,如商品名称、规格、原价、优惠价、积分、库存、是否显示、秒杀Title说明、显示序号(秒杀商品以一个SKU为单位进行设置)
三、秒杀商品的图片须要单独设置,好比PC、APP、微信可能须要设置不一样图片
四、秒杀库存的设置:不能大于SKU库存,还需考虑秒杀开始前的购买状况,开始前购买是否减秒杀库存
五、秒杀销售数:记录秒杀销售数,主要用户统计和前端显示
六、秒杀商品表的基本设计
商品编号、活动编号、秒杀价格、秒杀积分、库存数、销售数、显示顺序、秒杀图片(各类客服端)、商品描述、是否有效、建立时间、建立人、修改时间、修改人
秒杀使用技术
1、价格服务
一、引入秒杀活动后,全部显示商品价格的地方都须要判断该商品是不是秒杀商品并获取秒杀价格(无论有没有秒杀活动都须要调用相关逻辑)
二、获取秒杀价格服务的调用量很是大,因此须要考虑优化
一、引入缓存,秒杀价格从缓存获取
二、定时任务更新缓存:当任务检测到价格变化时,实时更新缓存
三、价格服务的参数尽量简单
一、输入:商品编号、客户端类型、其它可能的扩展字段
二、输出:商品编号、秒杀价、秒杀积分、其它秒杀信息
2、
锁
一、由于秒杀瞬间并发比较大,因此极可能影响到库存,若是库存数据在缓存缓存中,须要对缓存加锁;若是在数据库中判断,则须要对数据库加锁