文章插圖

文章插圖
搶購、秒殺是如今很常見的一個應用場景 , 主要需要解決的問題有兩個:
1 高并發對數據庫產生的壓力
【淘寶秒殺在哪兒 淘寶app秒殺在哪里找】2 競爭狀態下如何解決庫存的正確減少(”超賣”問題)
對于第一個問題 , 已經很容易想到用緩存來處理搶購 , 避免直接操作數據庫 , 例如使用Redis 。
重點在于第二個問題
常規寫法:
查詢出對應商品的庫存 , 看是否大于0 , 然后執行生成訂單等操作 , 但是在判斷庫存是否大于0處 , 如果在高并發下就會有問題 , 導致庫存量出現負數
先將商品庫存如隊列
webbench -c 5000 -t 60 http://192.168.1.198/big/index.php
ab -r -n 6000 -c 5000 http://192.168.1.198/big/index.php
上述只是簡單模擬高并發下的搶購 , 真實場景要比這復雜很多 , 很多注意的地方
如搶購頁面做成靜態的 , 通過ajax調用接口
再如上面的會導致一個用戶搶多個 , 思路:
需要一個排隊隊列和搶購結果隊列及庫存隊列 。高并發情況 , 先將用戶進入排隊隊列 , 用一個線程循環處理從排隊隊列取出一個用戶 , 判斷用戶是否已在搶購結果隊列 , 如果在 , 則已搶購 , 否則未搶購 , 庫存減1 , 寫數據庫 , 將用戶入結果隊列 。
測試數據表
- 電腦修復工具怎么修復 設置修復工具在哪
- 安卓文件在哪個文件夾里 安卓的文件夾在哪里
- 水瓶男在婚姻中的表現 水瓶男不喜歡一個女生的表現
- 女人在分手后到底有多心機 女人分手后一般多久會后悔
- 如何挑選蘋果呢
- 每天吃紅棗好嗎
- 報表軟件的主要功能 報表系統功能
- 比較文件的工具 源代碼比較工具
- 麥冬泡水喝的功效與作用是什么
- 合理膳食與營養知識有哪些
