项目名称
秒杀项目
地址:https://github.com/steamyao/seckill
用途:为了学习多线程并发的知识,模拟多线程秒杀环境
上手指南
开发环境
springboot 2.1
IDEA
maven 3.6
kafka 2.1
redis 3.0
zookeeper
jdk 8.0
mysql8.0(这个不重要,换一个mysql-connection的jar包就行)
你将学到
- 搭建springboot 2.1框架
- 整合redis、kafka
- 数据库乐观。悲观锁、
- 线程池及多线程相关的知识
- 整合 swagger 2.0
- redis与zookeeper 分布式锁的使用
安装步骤
1.在 application.properties 修改服务端口、redis、zookeeper。kafka、mysql地址。\
2 在 lock 包中修改 redis、zookeeper 地址,这个包是分布式锁的,做成了Utils类。
项目展示
1.前端页面展示
2.后台页面
3.数据库
补充
- 在悲观锁一的实现中,由于加了事务,会出现死锁与事务回退(不会超卖),不加会出现超卖,所有会报出 Deadlock found when trying to get lock; try restarting transaction 异常
- 数据库乐观锁二 超卖严重,这个属于乐观锁的问题。
- 秒杀时将成功的用户加入队列,然后用定时任务写入数据库。要经过一定的时间(10s),才会将秒杀成功的用户信息写回数据库。
- 最后一个秒杀,是通过 Jmeter 模拟多个线程来访问,最高可以承受 100000 个线程,也不会出错,基本功能实现了。
鸣谢
该项目参考了 小柒2012 的 springboot-seckill
感谢阅读!
版权声明:本文为qq_36647176原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。