秒殺專案思路整理

2021-10-06 02:34:19 字數 982 閱讀 7369

因為秒殺的商品需要存入redis中,所以需要提前將商品資訊存入redis,而不是初次有使用者訪問時在去查redis。

思路:當專案啟動時,執行查詢秒殺資訊業務。這裡用到了 @postconstruct註解,其是隨著servlet生命週期進行的。參考文章1

@postconstruct

public

void

init

() throws exception

list goodslist = goodslistr.

getdata()

;for

(goodsvo goods : goodslist)

使用者登入存redis,有效期12分鐘

每次查詢返回秒殺狀態:未開始,正在進行,已結束

#todo快取html

zk修改標記 #todo

3.7 傳送訊息佇列,建立訂單訊息,在catch中捕獲amqpexception(訊息佇列)異常,則讓庫存加1,移除售空map中對應商品標記,讓其他使用者繼續秒殺該商品。也要zk修改標記 #todo

3.8 訊息佇列監聽:

①再次查詢庫存是否有剩餘,沒有,返回;,有繼續執行

②再次判斷該使用者是否已經秒殺到,不允許重複秒殺。

③減庫存(mysql),下訂單,sql加判斷,防止變為負數

update miaosha_goods set stock_count = stock_count -

1 where goods_id = # and stock_count >

0

訂單表中加唯一索引,防止使用者重複購買

這裡主要是非同步下單,先預減redis庫存,然後再修改mysql。

④建立訂單,並返回。

秒殺系統思路

隨著電商的發展,秒殺系統已經發展成為電商必不可少的組成部分,如小公尺手機的秒殺,12306的搶票,這些系統的共同特點都是 庫存只有乙份,瞬時流量非常大,所有人會在集中的時間讀和寫這些資料,多個人讀乙個資料 讀寫衝突,鎖非常嚴重,這是秒殺業務難的地方。那我們怎麼構建秒殺業務的架構呢?構建架構需要總體做...

秒殺系統優化思路

一 秒殺業務為什麼這麼難做 秒殺系統,庫存只有乙份,所有人會在集中的時間讀和寫這些資料。例如 那我們怎麼優化秒殺業務呢?二 優化方向 以上的兩個場景要優化有兩個方向 三 常見秒殺架構 常見的秒殺架構基本是這樣的 四 各層優化細節 回顧一下我們12306剛出來那年搶票的場景,點選 查詢 按鈕之後,系統...

秒殺系統設計整理

乙個秒殺系統的設計,涵蓋若干要素。比如 每乙個要素,都是解決乙個具體的問題場景。讀寫請求分離 秒殺一般分為2個階段,秒殺準備階段,秒殺階段。在秒殺準備階段,一般流量會逐漸上公升,使用者會不斷的查詢秒殺商品等待開始。在這個階段,按資源型別的區別,分為靜態資源 動態介面。靜態資源提前走cdn部署或者類似...