一铝噩、簡易秒殺介紹
??基于Spring Boot+MyBatis+Redis+MySQL實現(xiàn)簡易秒殺功能,完整代碼見:https://github.com/just-right/seckill
- 使用EasyCode插件快速生成通用代碼
- 使用Lua腳本解決庫存遺留問題
- 使用Set類型解決重復秒殺
- 使用ProtostuffIOUtil序列化對象
- 使用Jmeter工具測試秒殺
二凉唐、前期準備
2.1 MySQL數(shù)據(jù)庫準備
- 對應的SQL見 /src/main/resources/sql/CreateDataBase.sql
- 創(chuàng)建數(shù)據(jù)庫mybatis
- 建表 - product(商品)/seckillactivity(秒殺活動)/seckill_success(秒殺成功記錄)
- MySQL配置信息見 /src/main/resources/application.properties
2.2 Redis數(shù)據(jù)庫準備
- Redis配置信息見 /src/main/resources/application.properties
2.3 PostMan測試工具準備
2.4 Jmeter測試工具準備
三、測試步驟
3.1 創(chuàng)建秒殺活動
??使用PostMan發(fā)出請求(id-商品ID & num-秒殺數(shù)量):
http://127.0.0.1:8080/seckillactivity/seckill/start/?id=1&num=10
//返回信息-返回id為秒殺活動ID,用于3.2[訪問秒殺界面]
{
"data": {
"activityname": "薅羊毛-ea18c",
"id": 642,
"product": 1,
"seckillnum": 10
}
}
3.2 訪問秒殺界面
??使用3.1返回的活動ID,使用PostMan發(fā)出請求(將活動信息存入緩存):
//返回秒殺活動信息
{
"data": {
"activityname": "薅羊毛-ea18c",
"id": 642,
"product": 1,
"seckillnum": 10
},
"status": "默認"
}
3.3 開始秒殺
??使用Jmeter測試工具進行測試,可以直接導入秒殺測試.jmx,將請求信息存入data.csv文件中,秒殺請求配置如下:
圖3-1 秒殺請求配置.png
3.4 查看結果
??秒殺成功:
圖3-2 秒殺成功.png
??秒殺失斚才印:
圖3-3 秒殺失敗.png
??重復秒殺:
圖3-4 重復秒殺.png
??查看秒殺成功名單:
圖3-5 查看秒殺成功名單.png
??秒殺商品剩余庫存:
圖3-6 秒殺商品剩余庫存.png