秒殺系統挑戰與對策(week 9)

2022-07-09 02:57:11 字數 672 閱讀 8776

秒殺大家都很熟悉,它就是在某一時刻大量請求同時搶購某一商品並完成交易的過程。作為乙個支援秒殺活動的系統,面臨哪些挑戰,又有什麼對策呢?

相較於平時的售賣,秒殺最大的特點就是高併發、瞬時的高併發。由於秒殺商品的超高價效比,大量的買家湧入,給系統貢獻了第一波併發使用者;除此之外,還有薅羊毛黨利用機械人、殭屍號等貢獻的第二波併發「使用者」。

這個高併發,給系統帶來了一下挑戰:

頻寬耗盡

應用伺服器負載過高最終崩潰

資料庫壓力過大崩潰

商品超賣

假設系統是按平時支援100併發使用者設計實現的,若秒殺時有10000併發使用者,系統的頻寬、伺服器、資料庫等等是不可能抗住的。而增加100倍的頻寬、伺服器來支援秒殺既不經濟也不現實。那麼,我們如何應對呢?

從秒殺系統的挑戰我們可以看到,一旦使用者的請求都進入到後端,那麼就憑平時系統的那些伺服器肯本扛不住,秒殺系統會拖垮全站。該如何避免大量請求到達後端甚至拖垮全站呢?我們的基本對策應該是:

把盡量多的請求攔截在應用伺服器之前,只放少量有效的請求進入後端,並且盡可能減少請求的資料量;

即使秒殺系統扛不住,也不能影響平時系統的正常執行。

對於策略1,我們可以採取的具體措施有,

對於策略2,我們可以做系統隔離。秒殺系統執行在單獨的伺服器集群之上,不和現存生產環境共享伺服器或者頻寬。需要呼叫現有系統服務的地方有設定降級或熔斷機制。

秒殺 秒殺系統 優化之路

1 im系統,例如qq或者微博,每個人都讀自己的資料 好友列表 群列表 個人資訊 2 微博系統,每個人讀你關注的人的資料,乙個人讀多個人的資料 3 秒殺系統,庫存只有乙份,所有人會在集中的時間讀和寫這些資料,多個人讀乙個資料。例如 小公尺手機每週二的秒殺,可能手機只有1萬部,但瞬時進入的流量可能是幾...

秒殺系統的設計與實現

redis 高併發鎖機制 如何限制乙個ip使用搶購軟體?秒殺的超賣問題?將存庫從mysql前移到redis中,所有的寫操作放到記憶體中,由於redis中不存在鎖故不會出現互相等待,並且由於redis的寫效能和讀效能都遠高於mysql,這就解決了高併發下的效能問題。然後通過佇列等非同步手段,將變化的資...

秒殺系統思路

隨著電商的發展,秒殺系統已經發展成為電商必不可少的組成部分,如小公尺手機的秒殺,12306的搶票,這些系統的共同特點都是 庫存只有乙份,瞬時流量非常大,所有人會在集中的時間讀和寫這些資料,多個人讀乙個資料 讀寫衝突,鎖非常嚴重,這是秒殺業務難的地方。那我們怎麼構建秒殺業務的架構呢?構建架構需要總體做...