1. 程式人生 > >高併發秒殺系統技術架 構解析和實踐

高併發秒殺系統技術架 構解析和實踐

學來的,個人備忘

什麼是秒殺?難點在哪?

秒殺系統難點(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

Redis 與 memcached 的秒殺之爭

這裡寫圖片描述

網際網路架構師技能樹

這裡寫圖片描述