先上源码地址:https://github.com/HermanCho/seckill


项目总结

本项目基于慕课网的秒杀项目,源代码的参考很多来源于以下博客

商城秒杀系统


改进的地方:(主要是前两个)

  • 消息可靠性传输的实现,包括投递、持久化、消费 + 幂等性, 3 + 1 的实现

  • redis预减库存的库存补充方案

  • 改进了 @AccessLimit的使用

  • 整合了log4j2,方便维护

  • 进行了springboot版本升级整合。

源项目的版本太低,导致rabbitMQ很多问题,踩了不少坑。

  • 交换机Direct模式改进为Fanout模式,效率更高。

  • 验证码不合理,简单注释掉了相关的逻辑。毕竟抢单的时候,还要输验证码,体验极差


项目的完善思路:

  • 秒杀不一定不允许重复秒杀,应该分两个表,一个唯一索引,另一个不限制

  • 支付订单、取消订单的接口

    其实这业务挺关键的,不过没时间写,后续有机会再实现吧

  • 前端对未支付订单,启动计时器,到点触发取消订单接口。

  • 前端对进行请求的订单,需要设置超时器。若超时仍未得到相关响应,就停止并提示。防止异常情况占用大量资源。

  • 开启定时任务,扫描数据库,加载当天开启的秒杀任务,key有效期一天。

    否则内存肯定不够用。(粒度可细到每小时)

  • 各种key的过期时间设置。


推荐阅读顺序:

相关博文也可以从分类专栏进入。

  1. secKill项目 — 可靠性传输的实现 及 易错点总结
  2. secKill项目 — Redis预减库存的存在的问题 及 库存补偿
  3. secKill项目 — 限制同一用户只有一个请求生效

没找到地方用分布式锁…但项目中还是实现了相关代码

Redis分布式锁的注意点总结 + 参考代码

附踩坑记录:

secKill项目 — @AccessLimit用法的问题

RabbitMQ 消费者如何获取生产者设置的correlationId + 得到CorrelationId为空的解决方案 + 源码解析

RabbitMQ 消费者确认auto 和 manual 模式对异常的处理区别(含重试、requeue的影响)

log4j2 输出指定单一日志级别(不是该级别及其以上!!!)


如果项目有相关问题,或文章有误,欢迎指出或讨论。

secKill项目 --- 总结 + 推荐阅读顺序 + 源码地址相关推荐

  1. 阅读 ANDROID 源码的一些姿势

    日常开发中怎么阅读源码 找到正确的源码 IDE是日常经常用的东西,Eclipse就不说了,直接从Android Studio(基于IntelliJ Community版本改造)开始. 我们平时的And ...

  2. 阅读 Android源码的一些姿势

    日常开发中怎么阅读源码 找到正确的源码 IDE 是日常经常用的东西,Eclipse 就不说了,直接从 Android Studio(基于 IntelliJ Community 版本改造)开始. 我们平 ...

  3. 阅读Android源码的一些姿势

    2019独角兽企业重金招聘Python工程师标准>>> 前面吐槽了 有没有必要阅读Android源码,后面觉得只吐槽不太好,还是应该多少弄点干货.需要说明的是,Android每个系统 ...

  4. 新手程序猿编程实战项目推荐【附源码下载】

    为你精选 ! 知识更新那么快,跟随不上怎么办? 碎片信息那么多,选择恐惧怎么办? 别担心,我用心挑选了几个实战项目. 长期推送干货.职场心得,让你收获满满. 话休絮烦,点击关注,长期推送编程干货! 仿 ...

  5. 大牛教你这样阅读android源码

    当你去面试时,经常会被问到,你是否阅读过android系统源码?那系统源码该如何阅读呢? 下面,让我们来看看大牛们是如何阅读的(来自知乎的牛人们http://www.zhihu.com/questio ...

  6. 下载和阅读Android源码

    目录 一.如何下载AOSP 1.全量下载 2.单个下载 目录结构 二.如何阅读AOSP 1.要阅读哪些源码 2.阅读源码的顺序和方式 2.1 阅读顺序 2.2 阅读方式 3.用什么工具来阅读 3.1 ...

  7. webuploader 怎么在react中_另辟蹊径搭建阅读React源码调试环境支持所有React版本细分文件断点调试...

    引言(为什么写这篇文章) 若要高效阅读和理解React源码,搭建调试环境是必不可少的一步.而常规方法:使用react.development.js和react-dom.development.js调试 ...

  8. 手把手带你阅读Mybatis源码(三)缓存篇

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 前言 大家好,这一篇文章是MyBatis系列的最后一篇文章,前面两篇文章:手把手带你阅读M ...

  9. idea调试源代码c语言,IDEA阅读spring源码并调试

    目标:搭建起Spring源码阅读和代码调试跟踪的环境,顺便建立一个简单的Demo,能够调试Spring的源代码 本节,主要介绍一下Spring源码阅读和调试的相关环境搭建,并使用MVN创建一个非常简单 ...

最新文章

  1. AutoLISP将多段线各个端点坐标写入外部文件
  2. Winform中在FastReport的PreviewControl预览控件中对report控件模板中控件值进行修改
  3. qlabel文本改变信号_周明:NLP进步将如何改变搜索体验
  4. python做成绩表_自学Python笔记:用Python做成绩分析(2)
  5. Expression Blend 学习视频下载
  6. Jenkins Gitee 实现持续集成CI/CD工具【免费、推荐】
  7. 用HashMap去重
  8. 抖音春晚红包百亿互动量级背后,火山引擎浮出水面
  9. Oracle 高 Version counts 问题说明
  10. ubuntu下gedit查看txt中文乱码解决办法
  11. 分组 php库,ThinkPHP分组下自定义标签库实例
  12. ②五元物联网芯片点亮led 庆科EMW3060 , 运行alios- blink程序
  13. UVa 10192 - Vacation amp; UVa 10066 The Twin Towers ( LCS 最长公共子串)
  14. 机械键盘按键重复_如何修复机械键盘上的卡住或重复键
  15. Android新浪微博实训报告,新浪微博产品简析
  16. vue中js转换火星坐标以及真实坐标
  17. portal无线认证服务器,无线AC配置portal认证功能portal 认证服务器问题
  18. Java pta练习题 第一章
  19. 为什么说python适合ai_为什么Python被认为是AI和机器学习的最好语言?
  20. 以太猫游戏主合约(六)

热门文章

  1. 签名文件一键自动生成
  2. Java函数调用重试的正确姿势
  3. freeswitch使用自签证书,配置WSS
  4. 单相交流电和三相交流电概念扫盲
  5. 斑马快传,高效安全的内外网文件传输软件,可穿透网闸服务器杀毒。
  6. 微信二维码登录实现思路
  7. 杜洋PCB设计视频教程笔记(陆续更新)
  8. 模拟ATM机存取款管理系统C语言课程设计
  9. Waves Complete 12 for mac(音频信号处理工具)
  10. Dropbox网盘三招实用技巧