電商秒殺系統可能遇到的坑及思路

2022-05-05 22:54:08 字數 1143 閱讀 4831

電商秒殺系統設計:

秒殺系統分為2個部分,乙個是靜態的html等內容,另乙個參與秒殺的web後台請求介面。

靜態html等內容,直接上cdn,壓力一般不會大,瓶頸基本在後台請求介面上,必須能夠支援高併發請求。

1.悲觀鎖

在修改資料的時候,採用鎖定狀態,排斥外部請求的修改。遇到加鎖的狀態,就必須等待。

在「高併發」場景下,會很多的修改請求,每個請求都需要等待「鎖」,某些執行緒可能永遠都沒有機會搶到這個「鎖」,請求就會死在那裡。

這種請求會很多,瞬間增大系統的平均響應時間,容易使可用連線數被耗盡,系統陷入異常。

2.fifo佇列

直接將請求放入佇列中的,採用fifo(先進先出),這樣就不會導致某些請求永遠獲取不到鎖。

但是高併發場景下請求很多,可能一瞬間將佇列記憶體「撐爆」,然後系統又陷入到了異常狀態。囧

那麼就得設計乙個極大的記憶體佇列。

但是,佇列請求的速度根本無法和瘋狂湧入佇列中的數目相比。佇列內的請求越積累越多,最終web系統平均響應時候還是會大幅下降,系統還是陷入異常。囧

3.樂觀鎖

所有請求都有資格去修改資料,但會獲得乙個該資料的版本號,只有版本號符合的才能更新成功,其他的返回搶購失敗。

這樣的話,就不需要考慮佇列的問題。個人建議這個方案。

缺點:它、會增大cpu的計算開銷。

作弊的手段:進攻與防守

1.同乙個賬號,一次性發出多個請求

應對方案:

在程式入口處,乙個賬號只允許接受1個請求,其他請求過濾。

同乙個uid,限制訪問頻度,做頁面快取,x秒內到達站點層的請求,均返回同一結果。

2.多個賬號,一次性傳送多個請求

應對方案:

(1).彈出驗證碼,分辨出真實使用者。

(2).直接禁止ip,簡單粗暴實用,可能會有「誤傷「。

3.多個賬號,不同ip傳送不同請求

通過木馬黑掉普通使用者的電腦,不影響電腦正常執行,只是**ip包,普通使用者電腦被變成了ip**出口。這種做法,黑客就拿到了大量的獨立ip,然後搭建為隨機ip服務,就是為了掙錢。

應對方案:

和真實使用者的行為,已經基本相同,只能設定業務門檻過濾。

前端層設計

1.瀏覽器層請求攔截使用者點選「搶購「後,按鈕置灰。

2.js限制使用者在x秒之內只能提交一次請求。

電商秒殺系統設計

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...

使用Redis搭建電商秒殺系統

秒殺活動是絕大部分電商選擇的低價 推廣品牌的方式。不僅可以給平台帶來使用者量,還可以提高平台知名度。乙個好的秒殺系統,可以提高平台系統的穩定性和公平性,獲得更好的使用者體驗,提公升平台的口碑,從而提公升秒殺活動的最大價值。本文討論雲資料庫redis版快取設計高併發的秒殺系統。秒殺活動對稀缺或者 的商...

電商系統 好用的電商系統 電商管理系統

好用的電商管理系統 首先對於日漸擴大的電商行業來說,每日訂單資料統計 訂單產品的分類 老客戶的維護 店鋪每日的實際收入 庫存情況 採購物品的資訊跟蹤都是需要我們花時間去統計和關注的,所以電商管理最主要的作用應該體現在 1.商品管理 2.庫存管理 3.採購管理 4.訂單管理 5.配送結算 6.財務管理...