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

先上源码地址: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 输出指定单一日志级别(不是该级别及其以上!!!)


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

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值