# 电商项目秒杀系统实战
## 初始
大三学生准备实习找工作,写下这个小项目。
项目秒杀系统封装还不算太好,后续打算写一个商城项目并运用其中进行二次开发。
希望喜欢的同学能给个star,谢谢。
## 开发工具
IntelliJ IDEA
## 开发环境
| JDK | Maven | Mysql | SpringBoot | springcloud | Redis | RabbitMQ |
| ---- | ----- | ----- | ------------- | ----------- | ----- | -------- |
| 1.8 | 3.5.2 | 5.7 | 2.0.4.RELEASE | Finchley.M9 | 3.2 | 3.7.14 |
## 使用说明
1. 下载代码 git clone https://github.com/ZreoWdd/seckill_parent.git 将项目下载到IDEA里面
2. 运行sql文件夹下的sql文件
3. 到src/main/resources下的application.yml下修改你的数据库链接用户名与密码
4. 安装redis、mysql、rabbitmq、maven等环境
5. 启动前,检查配置 application.yml 中相关redis、mysql、rabbitmq地址
## 秒杀的业务特点
1、瞬时并发量大:大量用户会在同一时间抢购,网站流量瞬间激增。
2、库存少:一般都是低价限量,而访问的数量远远大于库存数量,只有极少数人成功。
3、业务流程简单:流程短,立即购买,下订单,减库存。
4、前期预热:对于还未开启活动的秒杀商品,以倒计时的方式显示,只能访问不能下单。
## 设计思路
![sign.png](assets/sign.png)
1、限流:只能让秒杀成功的一小部分人进入到后台,和数据库进行交互,来减少数据库服务器的压力。
2、缓存:将部分业务逻辑写到缓存里,例如:商品限购数量、秒杀政策等。
3、异步:将业务逻辑拆分,减少服务器压力,例如:正常业务流程是下订单、付款、减库存同一时间完成,秒杀时可以将业务逻辑拆分。
4、预热:商家进行宣传,并提前设置好秒杀的商品、秒杀时间、限购数量,将设置的商品写入 redis 缓存。
5、展示:页面分为两层,第一层是商品列表页,第二层是商品详情页,通过商品列表页链接进入商品详情页,秒杀开始前,展示商品秒杀倒计时,不允许操作提交订单,只允许查看商品详情。秒杀开始时,展示商品秒杀到期时间。
6、提交订单:秒杀提交完订单将 redis 缓存里的数量减少,并提示支付。
7、队列操作:当支付成功之后,将秒杀成功详情写入 rabbitMQ,订单服务进行监听接收消息写入订单,库存服务进行监听接收消息减少库存。
8、时间服务器:页面服务端通过负载进行布署,各服务器时间可能会不一致,因此增加时间服务,来提供统一的时间。
## 技术架构
![架构](assets/架构.png)
整体架构图:
Eureka Client:
时间服务(leyouTimeServer,端口号8000):为页面服务提供时间统一的接口。
商品服务(leyouStock,端口号7000):对外提供的接口(商品列表、商品详情、秒杀政策)。
库存服务(leyouStorage,端口号6001):队列监听,在队列中提取消息与数据库交互减少库存。
会员服务(leyouUser,端口号5000):为页面服务提供会员数据接口,会员的添加、修改、登录。
订单服务(leyouOrder,端口号4000):队列监听,在队列中提取消息与数据库交互生成订单。
页面服务(leyouClient,端口号3000):为前端页面提供数据接口。
Eureka Server:
注册中心(leyouServer,端口号9000)各服务都在注册中心进行注册。
配置中心 (leyouConfig):提供所有服务需要的配置。
Redis的应用:
![redis](assets/redis.png)
缓存商品数量、秒杀政策。
商家对秒杀政策、商品限量进行设置,设置完成写入Redis。
消费者访问商品详情,提交订单之后,从Redis中减少商品数量。
Redis里存取内容:
1、在政策新增的时候存入,key的值为:LIMIT_POLICY_{sku_id},value的值为政策内容
2、商品列表取数据时,通过key(LIMIT_POLICY_{sku_id}),取出政策内容。
3、政策到期之后,自动删除。
RabbitMQ的应用:
![RabbitMQ](assets/RabbitMQ.png)
消费者提交订单,自动写入订单队列:
订单队列:订单服务监听订单队列,接收到消息之后将队列信息写入数据库订单表。
消费者付款之后,更新订单状态,更新成功之后写入库存队列
库存队列:库存服务监听库存队列,接收到消息之后将库存信息写入数据库减少库存。
## 数据库结构
![databaseTable.png](assets/databaseTable.png)
## 项目描述
1. 使用springcloud进行分布式,让多台服务器可以响应。
2. 使用redis做缓存提高访问速度和并发量,减少数据库压力。
3. 使用页面静态化,缓存页面至浏览器,前后端分离降低服务器压力。
4. 使用消息队列完成异步下单,提升用户体验,削峰和降流。
## 项目测试
1. 新建秒杀政策
地址 : <http://localhost/seckillClient/page/limitPolicyPage.html>
![limitpolicyPage.png](assets\limitpolicyPage.png)选择商品,输入秒杀价格、秒杀库存、开始时间、结束时间,点保存。
![limitPolicypage2.png](assets\limitpolicyPage2.png)
2. 登录页面
地址:http://localhost/seckillClient/page/loginPage.html
![limitPolicypage2.png](assets\limitpolicyPage2.png)
3. 商品列表页
地址:<http://localhost/seckillClient/page/stockListPage.html>
![stocklist.png](assets/stocklist.png)
4. 商品详情页
地址:<http://localhost/seckillClient/page/stockDetailPage.html?sku_id=27359021557>
![stockpage.png](assets/stockpage.png)
5. 提交订单
在商品详情页中点击【立即抢购】
地址:<http://localhost/seckillClient/page/createOrderPage.html?sku_id=27359021557>
![createorderpage.png](assets/createorderpage.png)
6. 付款页面
在提交订单页面点击【提交订单】
地址:<http://localhost/seckillClient/page/payPage.html?order_id=1565061554849>
![createorderpage.png](assets/createorderpage.png)点击【微信支付】,提示“支付成功”
![paysuccess.png](assets/paysuccess.png)
没有合适的资源?快使用搜索试试~ 我知道了~
《学习资料》--基于springcloud的高并发和商品秒杀项目,通过redis,rabbitmq等技术实现秒杀的高并发.zip
共191个文件
class:37个
java:36个
png:23个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 31 浏览量
2024-04-19
09:01:02
上传
评论
收藏 5.74MB ZIP 举报
温馨提示
个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~
资源推荐
资源详情
资源评论
收起资源包目录
《学习资料》--基于springcloud的高并发和商品秒杀项目,通过redis,rabbitmq等技术实现秒杀的高并发.zip (191个子文件)
DateUtils.class 12KB
OrderService.class 8KB
SkuService.class 6KB
IdWorker.class 4KB
StorageService.class 4KB
OrderController.class 3KB
Order.class 3KB
Sku.class 3KB
OrderDetail.class 3KB
UserService.class 2KB
SpuDetail.class 2KB
SkuController.class 2KB
SkuVo.class 2KB
StorageQueue.class 2KB
UserController.class 2KB
OrderQueue.class 2KB
User.class 2KB
LimitPolicy.class 2KB
StorageController.class 2KB
OrderDao.class 1KB
StorageDao.class 1KB
SkuDao.class 1KB
Storage.class 1KB
OrderApplication.class 1KB
StockApplication.class 1KB
OrderVo.class 1015B
StorageApplication.class 995B
TimeController.class 917B
UserDao.class 911B
ServerApplication.class 818B
ClientApplication.class 811B
TimeApplication.class 801B
UserApplication.class 801B
ZuulApplication.class 796B
MQConfig.class 677B
MQConfig.class 671B
test.class 437B
bootstrap.css 188KB
bootstrap.css 188KB
bootstrap.min.css 152KB
bootstrap.min.css 152KB
bootstrap-grid.css 63KB
bootstrap-grid.css 63KB
bootstrap-grid.min.css 47KB
bootstrap-grid.min.css 47KB
bootstrap-datetimepicker.min.css 11KB
bootstrap-datetimepicker.min.css 11KB
bootstrap-reboot.css 5KB
bootstrap-reboot.css 5KB
bootstrap-reboot.min.css 4KB
bootstrap-reboot.min.css 4KB
.gitattributes 86B
.gitignore 154B
stockDetailPage.html 6KB
stockDetailPage.html 6KB
stockListPage.html 6KB
stockListPage.html 6KB
limitPolicyPage.html 5KB
limitPolicyPage.html 5KB
createOrderPage.html 5KB
createOrderPage.html 5KB
payPage.html 4KB
payPage.html 4KB
loginPage.html 2KB
loginPage.html 2KB
OrderService.java 8KB
IdWorker.java 6KB
SkuService.java 6KB
StorageService.java 4KB
OrderController.java 3KB
Order.java 2KB
UserService.java 2KB
Sku.java 2KB
OrderDetail.java 2KB
SpuDetail.java 2KB
SkuController.java 2KB
SkuVo.java 2KB
OrderDao.java 1KB
SkuDao.java 1KB
LimitPolicy.java 1KB
User.java 1KB
StorageController.java 1KB
UserController.java 1KB
StorageDao.java 1KB
OrderQueue.java 1KB
StorageQueue.java 1KB
Storage.java 965B
OrderApplication.java 770B
UserDao.java 767B
OrderVo.java 756B
StockApplication.java 667B
StorageApplication.java 633B
TimeController.java 609B
ServerApplication.java 498B
TimeApplication.java 487B
ClientApplication.java 478B
UserApplication.java 469B
ZuulApplication.java 461B
MQConfig.java 400B
MQConfig.java 395B
共 191 条
- 1
- 2
资源评论
季风泯灭的季节
- 粉丝: 2017
- 资源: 3370
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功