在進行系統設計的過程中,首先問題場景的特點。秒殺系統是十分典型的高併發場景,其特點也十分顯著:高併發、低庫存、高瞬時流量。再者分析整個系統的輸入輸出,即大概的 api 閘道器擁有的功能:查(使用者查詢商品資訊)、改(使用者購買商品)。將系統的特點和功能分析完畢後,就可以根據這些資訊進行系統設計。乙個常規的秒殺系統從前到後,依次有:
前端頁面 -> **服務 -> 後端服務 -> 資料庫
根據這個流程,一般優化設計思路:將請求攔截在系統上游,降低下游壓力。在乙個併發量大,實際需求小的系統中,應當盡量在前端攔截無效流量,降低下游伺服器和資料庫的壓力,不然很可能造成資料庫讀寫鎖衝突,甚至導致死鎖,最終請求超時。
整體優化手段包含:快取、限流、削峰(mq)、非同步處理、降級、熔斷、set化、快速擴容
利用負載均衡(例如 nginx 等)使用多個伺服器併發處理請求,減小伺服器壓力。
面試題 秒殺系統設計
秒殺業務的特點就是多個人讀乙個資料,難點就是讀寫衝突,鎖情況特別的嚴重。所以我們盡量不要讓請求落在資料庫上去,讓請求攔截在系統的上游。解決思路 1 限流 遮蔽掉無用的流量,允許少部分流量流向後端。2 削峰 瞬時大流量峰值容易壓垮系統。常用的消峰方法有非同步處理 快取和訊息中介軟體等技術 前端優化 1...
秒殺 秒殺系統 優化之路
1 im系統,例如qq或者微博,每個人都讀自己的資料 好友列表 群列表 個人資訊 2 微博系統,每個人讀你關注的人的資料,乙個人讀多個人的資料 3 秒殺系統,庫存只有乙份,所有人會在集中的時間讀和寫這些資料,多個人讀乙個資料。例如 小公尺手機每週二的秒殺,可能手機只有1萬部,但瞬時進入的流量可能是幾...
面試 如何設計乙個秒殺系統
將請求盡量攔截在系統上游,同時對請求進行限流和削峰。大體架構如下 限流 前端答題或驗證碼,來分散使用者的請求 禁止重複提交 限定每個使用者發起一次秒殺後,需等待才可以發起另一次請求,從而減少使用者的重複請求 本地標記 使用者成功秒殺到商品後,將提交按鈕置灰,禁止使用者再次提交請求 動靜分離 將前端靜...