你設計的秒殺系統,能通過 “雙十一” 大考嗎?

snakesss發表於2021-10-26

10月20日一年一度的雙十一拉開帷幕,當日下午兩點半,李佳琦準時開播,連續直播時長共計12個小時26分,共上架439件商品,直播間累計交易額高達115億元,預估銷量達3771萬。這個交易額近乎數百個小規模公司年營收,可以看到近年來直播電商異常火爆,小到種草博主大到流量明星,從李佳琦、薇婭到羅永浩,眾多一夜暴富的都市傳說指引海量玩家湧入,能想象到的所有變現量級高與不高的流量都一擁而上。

而作為電商商業的技術從業者,高的銷量意味著高的保障,對後臺工程師的能力也有著更高的要求。數百萬使用者衝進直播間,搶購商品,流量激增,如何保證系統高可用?秒殺系統究竟應該如何設計?所面臨的核心挑戰又有哪些?

技術難點

秒殺系統具有:限時、限量,定時定點,手動上架,瞬時流量洪峰,持續時間短等業務特點,其技術特點有:瞬時併發流量高,讀多寫少,流程簡單,基於上述特點,秒殺系統在設計時一般需要遵循以下原則:

  1. 非同步解耦
  2. 限流,將請求儘量攔截在上游
  3. 充分利用快取

當然除卻應遵循的原則外,秒殺系統在設計時以下問題也不得不考慮:

1、超賣

當付款的訂單量大於當前商品庫存量時,就會存在超賣問題,例如商品庫存只有300個,但秒殺售賣時,賣出350個,而超賣問題首先會導致商家無貨可發,容易引起商家和使用者的投訴,並且有可能產生賠付,如果是優惠券類商品超賣,將直接產生資產損耗,故設計秒殺系統時超賣問題是首要解決物件。

2、高併發

基於上述秒殺系統的特點:時間短、瞬時流量洪峰,秒殺往往僅持續幾分鐘,在高併發場景下,使用者的請求可以簡單概括為:獲取快取—查詢資料—重建快取—返回結果,如果命中快取直接返回結果,但短時間內大量的請求併發進來,很有可能會造成快取擊穿或者失效,如何解決這些問題也是不得不考慮的。

解決方案

以平常的交易平臺架構設計為例,我們需要關注交易服務、場景、基礎能力的搭建。我們將秒殺架構進行劃分,大體分為四層分別是:使用者層、負載均衡層、應用層和持久層

圖片

超賣解決方案

解決超賣問題的基本思路是:

  1. 直接依賴DB事務機制,做強一致和超賣校驗;
  2. 保證足夠的效能;(保證DB的服務能力盡量提供給寫場景)
  3. 合理處理異常;
  4. 實時處理超賣;超時關單+增加扣庫存超時時間;實時監控+實時干預
  5. 儘量不要使用非同步扣庫存

解決方案:同步,下單減庫存,程式碼縮影:

扣庫存:

UPDATE t_seckill_goods SET count = count -1, version = version +1 WHERE id = ? AND count > 0 AND version = ?

回滾庫存:

UPDATE t_seckill_goods SET count  = count +1, version = version +1 WHERE id = ? version = ?

圖片

當然解決上述問題不僅是下單減庫存這一同步方法,非同步也可實現。迴歸到秒殺系統自身,技術層僅解決了功能性的問題,而對於直播間秒殺來講,其本質依舊在於營銷,而營銷的本質在於吸引不是強迫~

叮咚!福利時間

上述秒殺系統解決方法僅是騰訊課堂海量優質IT網際網路課程中的冰山一角,還有涵蓋程式語言、前端開發、軟體研發(測試)、認證考試、雲端計算大資料、網路與運維、遊戲開發、硬體研發等領域的更多優質課程和內容。除此之外,1024程式設計師節,騰訊課堂也推出了專屬的活動哦,可謂儀式感拉滿!

作為廣大程式設計師的節日,1024早已不是個日曆表上單純的一天,它承載了程式設計師獨特的惆悵和浪漫。徜徉在0和1的世界裡,這份浪漫卻被每一個忙碌的日子所掩蓋,但即使是這樣,在1024這個特殊的日子裡,我們該有所不同,不是嘛?

別人的520情人節裡有玫瑰花?但在程式設計師的世界裡(16進位制裡522等於十進位制的1314),會在522的時候,送上1314個祝福。

別人過春節貼對聯?但在程式設計師的世界裡,他們會用一段程式碼把“Hello World”作為寄語寫給新的一年的自己...

所以,#1024程式設計師節#,騰訊課堂又會帶來什麼,將這個專屬節日儀式感拉滿呢?

搖霸符加BUFF,收穫自己節日的祝福和願景!

【活動獎品】

1、五符集卡:集齊五款霸符(「消滅BUG鴨」符、「提效摸魚」符、「永不宕雞」符、「成為大牛」符、「找到物件」符)的小夥伴,可獲得限量版霸符T恤一件,數量有限,先到先得。

圖片

圖片

2、彩蛋獎:隨機搖到彩蛋金霸符的幸運觀眾,將獲得騰訊課堂首次發行的霸符數字藏品,每款霸符數字藏品限量發行500份,共2500份。

圖片

【規則說明】

1、使用者登入H5,搖一搖互動,搖出不同霸符,集齊五款即可兌換基礎獎品;搖出金霸符即可獲得NFT數字藏品。

2、每位使用者擁有5次“搖霸符”機會,次數用盡後,可通過參與趣味問答解鎖額外機會,最多可搖50次。

3、使用者進入社群站內,鎖定活動連結,定時霸符雨,點選贏好禮(好禮包括現金紅包、課程優惠、NFT霸符,3C尖貨、數碼實物獎品、專業知識,現金紅包、定製T恤等)

圖片

還等什麼?現在就來參與,更多驚喜等你解鎖哦!

圖片

掃描二維碼

Get你的1024專屬「霸符」吧~

點選【此處】Get你的1024專屬「霸符」

相關文章