本人开发的新蜂商城增强版,完善了秒杀功能,添加秒杀单超期未支付任务,支持万人秒杀 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wayn111
V2EX    程序员

本人开发的新蜂商城增强版,完善了秒杀功能,添加秒杀单超期未支付任务,支持万人秒杀

  •  
  •   wayn111
    wayn111 2021-01-14 14:46:54 +08:00 4552 次点击
    这是一个创建于 1761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本项目是在 newbee-mall 项目的基础上改造而来,将 orm 层由 mybatis 替换为 mybatis-plus,添加了秒杀功能、优惠功能以及后台搜索功能,喜欢的话麻烦给我个 star

    简介

    本人之前一直是在传统公司上班,接触的都是政企项目,公司各系统业务繁多数据库表设计复杂,多是业务逻辑庞大使用技术也都不算新,算是 j2ee 时代的遗留产物,鉴于现在 springboot 、微服务、中间件等等风生水起,又因本人对商城系统情有独钟,因此打算先用 springboot 搭建一个商城系统,刚好发现了 newbee-mall 项目,就在此项目的基础上添加了一些自己没有接触过的新功能,一起进步。

    系统升级

    本次升级主要在原有秒杀功能的基础上进行了完善,秒杀优化如下:

    1. 秒杀页面静态化
    2. 添加了秒杀接口限流,基于 springAOP 实现
    3. 添加了秒杀接口防止重复提交,基于 spring 拦截器实现
    4. 使用 redis-set 数据结构判断用户是否买过秒杀商品
    5. 使用 redis 配合 lua 脚本进行原子自减,判断商品缓存库存是否大于 0
    6. 获取商品缓存,判断秒杀商品是否再有效期内
    7. 执行执行存储过程(减库存 + 记录购买行为)
    8. 使用 redis-set 数据结构记录购买过的用户
    9. 返回用户秒杀成功 VO
    10. 下单后启用秒杀订单 5 分钟未支付超期任务
    11. 订单 5 分钟内为支付则自动取消订单并回退库存

    源码

    github

    在线地址:newebee-mall

    分类管理 分类管理 会员管理 会员管理
    优惠管理 优惠管理 商品管理 商品管理
    秒杀管理 订单管理 订单管理

    秒杀专区

    秒杀专区为用户展示了后台设置的秒杀商品,在秒杀有效期内可以进行商品秒杀操作. 后台使用了储存过程提高秒杀操作的 tps

    优惠领取

    优惠页面为用户展示了后台设置的可用优惠,在下单时可以使用优惠卷减少下单金额

    商城 15 天交易额统计

    商城 15 天交易额统计可以为商城运营人员展示商城近期总交易金额

    感谢newbee-mall 项目原作者十三提供的基础项目支持

    参考资料

    秒杀架构模型设计
    Java 高并发秒杀 API (慕课网)
    秒杀系统设计与实现.互联网工程师进阶与分析

    newbee-mall plus 系列文章

    1 、 newbee-mall plus 简介
    第 1 条附言    2021-01-14 16:05:53 +08:00
    排版没做好
    第 2 条附言    2021-01-14 18:56:53 +08:00
    完善一下秒杀接口优化:
    本次升级主要在原有秒杀功能的基础上进行了完善,秒杀优化如下:

    1. 秒杀页面静态化
    2. 添加了秒杀接口限流,基于 springAOP 实现
    3. 添加了秒杀接口防止重复提交,基于 spring 拦截器实现
    4. 使用令牌桶算法过滤用户请求
    5. 使用 redis-set 数据结构判断用户是否买过秒杀商品
    6. 使用 redis 配合 lua 脚本进行原子自减,判断商品缓存库存是否大于 0
    7. 获取商品缓存,判断秒杀商品是否再有效期内
    8. 执行执行存储过程(减库存 + 记录购买行为)
    9. 使用 redis-set 数据结构记录购买过的用户
    10. 返回用户秒杀成功 VO
    11. 下单后启用秒杀订单 5 分钟未支付超期任务
    12. 订单 5 分钟内为支付则自动取消订单并回退库存
    第 3 条附言    2021-01-15 15:13:09 +08:00

    支付流程优化了一下: 支付宝支付时,展示了沙箱账号密码:

    24 条回复    2021-01-15 13:26:30 +08:00
    darksword21
        1
    darksword21  
    PRO
       2021-01-14 16:11:13 +08:00
    ........ 很好 很有精神
    wayn111
        2
    wayn111  
    OP
       2021-01-14 16:16:08 +08:00
    @darksword21 谢谢肯定
    ArJun
        3
    ArJun  
       2021-01-14 16:41:00 +08:00
    不错
    wqgogogo
        4
    wqgogogo  
       2021-01-14 16:49:33 +08:00
    挺厉害的,这个是真的能支付并抢到商品还是练习用的?
    yRebelHero
        5
    yRebelHero  
       2021-01-14 17:08:51 +08:00
    楼主优秀!向楼主学习!
    huntcool001
        6
    huntcool001  
       2021-01-14 17:19:50 +08:00
    emm. 压测过吗?
    wayn111
        7
    wayn111  
    OP
       2021-01-14 17:45:35 +08:00 via Android
    @huntcool001 压测过,秒杀接口可以抗一万请求
    wayn111
        8
    wayn111  
    OP
       2021-01-14 17:45:42 +08:00 via Android
    @ArJun 谢谢
    wayn111
        9
    wayn111  
    OP
       2021-01-14 17:46:44 +08:00 via Android
    @wqgogogo 可以抢到,接入了支付宝沙箱支付,微信支付是写死的
    muchan92
        10
    muchan92  
       2021-01-14 17:51:03 +08:00
    赞一个 支持
    wayn111
        11
    wayn111  
    OP
       2021-01-14 17:54:23 +08:00 via Android
    @wayn111 需要新注册用户,有用户限制
    wayn111
        12
    wayn111  
    OP
       2021-01-14 17:56:04 +08:00 via Android
    @muchan92 谢谢
    fallinlovewith
        13
    fallinlovewith  
       2021-01-14 17:57:21 +08:00 via Android
    !!!!!!!
    lpts007
        14
    lpts007  
       2021-01-14 18:02:35 +08:00 via Android
    不错,喜欢
    wayn111
        15
    wayn111  
    OP
       2021-01-14 18:12:57 +08:00 via Android
    @yRebelHero 一起进步
    wysnylc
        16
    wysnylc  
       2021-01-14 19:00:24 +08:00
    秒杀,指 redis lua 锁
    wayn111
        17
    wayn111  
    OP
       2021-01-14 19:05:38 +08:00 via Android
    Leigg
        18
    Leigg  
       2021-01-14 19:12:12 +08:00 via iPhone
    给了哈
    wfd0807
        19
    wfd0807  
       2021-01-14 19:13:16 +08:00
    能解释一下为什么用 mybatis plus 吗?在我看来 mybatis plus 是一个不伦不类的东西,而且一堆 bug
    iConnect
        20
    iConnect  
       2021-01-14 19:15:20 +08:00 via Android
    移动版没做?
    chenqh
        21
    chenqh  
       2021-01-14 19:15:54 +08:00 via Android
    楼主真有毅力
    wayn111
        22
    wayn111  
    OP
       2021-01-14 19:41:55 +08:00 via Android
    @Leigg 谢谢
    brezp
        23
    brezp  
       2021-01-15 11:15:28 +08:00
    赞一个,感觉看到了当年刚学习 java 的自己
    wayn111
        24
    wayn111  
    OP
       2021-1-15 13:26:30 +08:00
    @brezp 谢谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4666 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:54 PVG 17:54 LAX 01:54 JFK 04:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86