代码拉取完成,页面将自动刷新
秒杀最直观的定义:在高并发场景下而下单某一个商品,这个过程就叫秒杀
【秒杀场景】
早起的12306购票,刚被开发出来使用的时候,12306会经常出现 超卖 这种现象,也就是说车票只剩10张了,却被20个人买到了,这种现象就是超卖!
还有在高并发的情况下,如果说没有一定的保护措施,系统会被这种高流量造成宕机
【为什么使用秒杀】
搭建数据库
create database stockdb;
use stockdb;
# 用户
create table `user`(
uid int primary key auto_increment,
uname varchar(100),
upwd varchar(50)
);
# 商品
create table stock(
id int primary key auto_increment,
`name` varchar(50),
`count` int, #库存数量
sale int, #已售
`version` int #版本号(乐观锁)
);
# 订单
create table stock_order(
id int primary key auto_increment,
sid int,
`name` varchar(50),
`create_time` timestamp
);
insert `user` values('0','jiabin','123');
insert stock value('0','iPhone 13 Pro',15,0,0);
使用JMeter压力测试工具访问即可:http://localhost:8989/ms/stock/kill/1
解决商品超卖问题!
注意:若出现秒杀商品已经结束..
注释掉redis限时即可!
多次测试请注意数据库库存数量正常!
启动redis服务
# 后台启动
redis-server jconfig/redis.conf
# 设置一个商品有效秒杀时间
set kill1 1 EX 60
访问路径获取md5
通过生成的md5对商品进行秒杀
注意:若出现秒杀失败.当前商品异常火爆...
代表当前未获取到令牌桶生成的令牌,可以尝试注释令牌桶拦截再进行访问!
多次测试请注意数据库库存数量正常!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。