高併發秒殺系統技術架 構解析和實踐
阿新 • • 發佈:2018-12-25
學來的,個人備忘
什麼是秒殺?難點在哪?
秒殺系統難點(what)
高併發、負載壓力大
競爭資源是有限的
避免對其他業務的影響
提防“黃牛黨”
秒殺系統應用場景(why)
商品搶購
群紅包
優惠卷領取
搶火車票
線上預約
技術維度對秒殺系統的分析 —— 架構原則
技術維度對秒殺系統的分析 —— 優化技術
(1)場景描述
業務描述:有100臺蘋果7手機,模擬200個使用者同時請求購買,每個人都購買N臺手機
實現原理:基於資料庫的樂觀鎖 表t_goods_info
update t_goods_info set
amout = amout - #{buys}
where code = #{code} and amout - #{buys} >=0
優勢與問題
優勢
實現簡單
最可靠
劣勢
併發量小 300 - 700
(2)場景描述
業務描述:有100臺蘋果7手機,模擬200個使用者同時請求購買,每個人都購買N臺手機
實現原理:基於快取的樂觀鎖 。基於memcache的decr,decr是原子的。
使用decr的問題
decr是有毒的
Decr的返回值有隻有三種情況,
“>0”“=0”“=-1”
10 – 100 =0
解決的辦法
輕量級的鎖機制CAS機制
/**解釋:Check and set ,即儲存之前進行版本檢查,memcache 1.2.4新增的特性。**/
gets: 獲取item,並獲取版本號
cas:更新item,並上傳獲取item
時的版本號,版本號與伺服器一致
才能更新成功
基於memcached 程式碼演示
雲盤地址 ckpx