問題產生
某個商品突然說要做秒殺。
秒殺,挺耗費時間了,老闆和客戶商量,最後改成搶購。
其實就是增加庫存功能,然後人工在固定時間改庫存,使用者搶購。 (哈哈哈 就是這麼簡單)
活動規則
昨天 ( 5 - 11)
伺服器直接炸了,幾十秒之內所有專案不能訪問。
出現超賣。
在10號才三十幾人,沒想到11號,馬上變成1.2k人,我丟。
我本以為是個小專案,什麼限制都沒做。
(經歷過太多這種小專案了)
11號10點一到,直接炸了,還超賣。
改善
限制: (都要先經過 redis
的限制)
- 每個人每秒只能訪問一次
lpop
保證不超賣
我以為這樣不會炸了。
今天 ( 5 - 12 )
又炸了,但是沒有超賣,比昨天好很多,還能訪問。
殘餘問題
少賣
使用者發起購買請求,庫存-1,返回支付引數給前端。 也就是說: 使用者不支付,也會庫存-1
本來30個名額的,現在賣了30個,只有20個支付了,10個未支付,所以是少賣了。
我不想用複雜的來寫
- 老闆不會ra我花費太多時間來 客戶也沒有說什麼
- 我怕坑,如果用了佇列,還要自己測,測了上線還擔心bug
我慢慢想 簡單
&& 又能解決的辦法
為何不在支付成功後再庫存-1 ?
除了搶購商品都是這樣處理的
搶購商品這樣處理的話 逗我嗎 ……
本作品採用《CC 協議》,轉載必須註明作者和本文連結