秒殺系統(tǒng)設計

設計一個電商秒殺系統(tǒng)氮发,至少包含導購榜旦、交易和庫存系統(tǒng)的全鏈路簡易的整體方案,特別對于庫存處理細節(jié)上竟闪,希望給出比較完整的關(guān)鍵細節(jié)處理离福,需要有代碼配合的可以用偽代碼示例。方案上可以講大的設計炼蛤,也可以有小的解決方案妖爷,例如導購頁面如何為下游交易和庫存系統(tǒng)減壓,交易和庫存系統(tǒng)如何處理高并發(fā)問題理朋,也可以有部分細節(jié)處理絮识,如減庫存如何保證正確等等。


方案一

針對并發(fā)量比較大的情況嗽上,比如100萬用戶搶一個iphone次舌,要扛 100 萬的 TPS,需要非常多的機器兽愤,不太現(xiàn)實彼念。必須采用前端限流的辦法。

1. 靜態(tài)資源存放于CDN緩存

2.ngnix+lua限流浅萧,可根據(jù)在線人數(shù)計算概率逐沙,比如100萬請求只放過1萬人進入搶購系統(tǒng),其他請求返回搶購失敗洼畅。

3.利用CDN邊緣計算能力(此方法相當于要跟運營商定制服務)


方案二

1.把秒殺系統(tǒng)獨立出來吩案,部署單獨的秒殺服務器,以避免影響正常的交易系統(tǒng)帝簇。

2.秒殺活動持續(xù)時間短徘郭,瞬時數(shù)據(jù)量大。為了不影響現(xiàn)有數(shù)據(jù)庫的正常業(yè)務丧肴,可以建立新的庫或者表來處理

3.這種方式比較麻煩残揉,秒殺活動結(jié)束后,需要把數(shù)據(jù)同步回主業(yè)務庫


方案三

采用異步處理的方式闪湾,總體流程分為三步:接收請求冲甘、異步篩選绩卤、前端展示

1.因為是異步篩選的方式途样,可以采用隊列對洪峰請求進行過濾、排隊濒憋、篩選何暇,避免后端系統(tǒng)瞬時并發(fā)壓力

2.缺點是用戶體驗不好,搶購后需等待一段時間才能查詢到搶購結(jié)果


并發(fā)扣減庫存方案

一凛驮、采用數(shù)據(jù)庫行鎖

1.采用數(shù)據(jù)庫的行鎖機制裆站,庫存扣到?jīng)]有為至,應用根據(jù)更新行數(shù)判斷是否扣庫存成功

UPDATE inventory SET qty= qty- xxx where id=? and qty-xxx>0;

這種方式不能先把庫存查出來,再去計算宏胯,否則會有并發(fā)問題羽嫡;

2.另一種辦法是直接設置數(shù)據(jù)庫的字段數(shù)據(jù)為無符號整數(shù),當庫存數(shù)小于零時會執(zhí)行 SQL 語句失敗肩袍,通過攔截異常判斷

UPDATE inventory SET qty= qty- xxx where id=??


二杭棵、采用數(shù)據(jù)庫悲觀鎖

1.使用select .. for update語句查詢最新庫存

2.檢查庫存是否足夠

3.更新庫存提交事務


三、庫存放入redis緩存

1.庫存放到redis緩存中氛赐,在redis中進行庫存的查詢魂爪、扣減

2.扣減時需要加并發(fā)鎖,獲取鎖成功后才能扣減庫存

3.缺點是如果有比較復雜的減庫存邏輯艰管,或者需要使用事務滓侍,就需要數(shù)據(jù)庫中完成減庫存。

加鎖方式:使用set nx命令 key為要扣減的商品編號牲芋,value為當前時間+鎖超時時間(比如3秒)執(zhí)行業(yè)務扣減庫存后撩笆,需要釋放鎖。

釋放鎖邏輯(delete key): 判斷一下value - 當前時間是否已超過配置的鎖超時時間(比如3秒)街图,如果超過則不刪除浇衬。

為什么要執(zhí)行以上判斷? ?由于key是有超時時間的餐济,當delete還沒有到達redis的時候(已經(jīng)發(fā)出了)耘擂,key已經(jīng)由于超時delete掉。如果

這個時候有其他線程來獲取鎖絮姆,就會導致這個鎖會被delete掉

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醉冤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子篙悯,更是在濱河造成了極大的恐慌蚁阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸽照,死亡現(xiàn)場離奇詭異螺捐,居然都是意外死亡,警方通過查閱死者的電腦和手機矮燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門定血,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诞外,你說我怎么就攤上這事澜沟。” “怎么了峡谊?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵茫虽,是天一觀的道長刊苍。 經(jīng)常有香客問我,道長濒析,這世上最難降的妖魔是什么正什? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮号杏,結(jié)果婚禮上埠忘,老公的妹妹穿的比我還像新娘。我一直安慰自己馒索,他們只是感情好莹妒,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绰上,像睡著了一般旨怠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜈块,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天鉴腻,我揣著相機與錄音,去河邊找鬼百揭。 笑死爽哎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的器一。 我是一名探鬼主播课锌,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祈秕!你這毒婦竟也來了渺贤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤请毛,失蹤者是張志新(化名)和其女友劉穎志鞍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體方仿,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡固棚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仙蚜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片此洲。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鳍征,靈堂內(nèi)的尸體忽然破棺而出黍翎,到底是詐尸還是另有隱情面徽,我是刑警寧澤艳丛,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布匣掸,位于F島的核電站,受9級特大地震影響氮双,放射性物質(zhì)發(fā)生泄漏碰酝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一戴差、第九天 我趴在偏房一處隱蔽的房頂上張望送爸。 院中可真熱鬧,春花似錦暖释、人聲如沸袭厂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纹磺。三九已至,卻和暖如春亮曹,著一層夾襖步出監(jiān)牢的瞬間橄杨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工照卦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留式矫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓役耕,卻偏偏與公主長得像采转,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞬痘,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 什么是秒殺 通俗一點講就是網(wǎng)絡商家為促銷等目的組織的網(wǎng)上限時搶購活動 比如說京東秒殺氏义,就是一種定時定量秒殺,在規(guī)定...
    zwb_jianshu閱讀 554評論 0 0
  • 業(yè)務介紹 什么是秒殺图云?通俗一點講就是網(wǎng)絡商家為促銷等目的組織的網(wǎng)上限時搶購活動惯悠。 比如說京東秒殺,就是一種定時定量...
    愛情小傻蛋閱讀 1,932評論 0 1
  • 什么是秒殺 通俗一點講就是網(wǎng)絡商家為促銷等目的組織的網(wǎng)上限時搶購活動 比如說京東秒殺竣况,就是一種定時定量秒殺克婶,在規(guī)定...
    zwb_jianshu閱讀 665評論 0 1
  • 什么是秒殺 通俗一點講就是網(wǎng)絡商家為促銷等目的組織的網(wǎng)上限時搶購活動 比如說京東秒殺,就是一種定時定量秒殺丹泉,在規(guī)定...
    碼道功臣閱讀 6,035評論 2 79
  • 個人從事電商行業(yè)十幾年情萤,經(jīng)歷過大大小小的促銷活動和秒殺上百次,每次做秒殺瞬時訪問量會翻數(shù)十倍摹恨,甚至數(shù)百倍筋岛。對系統(tǒng)架...
    架構(gòu)師進階之路閱讀 534評論 0 2