1. 程式人生 > >秒殺系統(感悟&待續)

秒殺系統(感悟&待續)

秒殺

秒殺系統最重要的就是防止超賣(哈哈)。只要不虧本就行。同時秒殺系統流量一般比較大,採用同步方式效率肯定比較低。

秒殺就是請求過來,減去相應庫存,生成訂單的過程。如果庫存不足,則不能生成訂單。出錯一般就在查詢庫存和減庫存的過程中,不是同步的。

  1. 先提供一種簡單的思路:
    減庫存的sql里加上剩餘數量>=請求秒殺數量的條件,類似
update SecKillGoods g set g.remainNum = g.remainNum - ? where g.id= ? and g.remainNum>= ?

這樣在沒次執行sql時會判斷此次秒殺請求能否成功,可以防止超賣現象。但是使用的是資料庫的行級鎖。因此對於超高qps會有效率問題。商品已經被秒殺完之後的請求,還是會走到資料庫判斷

參考連結

  1. 基於快取(後續補充)