電商項目:商品秒殺系統我的理解

秒殺是電商平臺的一種品牌推廣、促銷的一個高併發短期的一個活動。能夠提升用戶體驗度和提升品牌知名度,
會在活動開始以前大力宣傳,假如促銷一百件商品,可能會吸引一萬個用戶同時在一個頁面不斷刷新,這裏能夠
用freemarker生成靜態頁,經過ajax動態獲取必需的數據,等待活動時間開始,可是若是隻在靜態頁進行對按鈕的
限制,可能會出現有些用戶修改電腦時間、前端js,致使出現提早搶購的狀況。咱們採用的解決方案是在後臺也進,
從頁面去進行搶購要快得多,咱們經過定時器,在活動開始的時候生成一個隨機字符串組成的密鑰存入redis,在用
戶刷新頁面時,若是時間到了活動範圍,會從redis中查出密鑰放入隱藏域中而且開放按鈕,在進入方法時,進行密
鑰對比,若是密鑰正確才能下單。在進行下單的時候,只有在支付成功後纔算做真正的庫存減小,可能兩我的同時
下單,致使支付後的售出數量超過庫存數量,出現貨不夠發的狀況,爲了不這種狀況,咱們把庫存數量分爲可出
售庫存數量以及鎖定庫存數量,咱們在下單的時候會對庫存進行鎖定,由於庫存是存在redis中的,在下單的時候會
用redis提供的incr方法和decr方法對可出售庫存以及鎖定庫存數量的改查變成一步,防止執行到一半時與其餘用戶
發生衝突,(舉例),在訂單成功支付後,再對鎖定庫存數量進行減小,而且經過MQ去異步存儲到mysql,防止高
併發mysql服務器壓力太大,遇到退單的狀況,對鎖定庫存數量進行減小,再對可出售數量進行增長。前端

相關文章
相關標籤/搜索