方向:將請求盡量攔截在系統上游
思路:限流和削峰
1、限流:遮蔽掉無用的流量,允許少部分流量流向後端。
2、削峰:瞬時大流量峰值容易壓垮系統。常用的消峰方法有非同步處理、快取和訊息中介軟體等技術
1、靜態資源快取
2、限流方法
1、控制層方面入手
使用多個伺服器併發處理請求,減小伺服器壓力。
在秒殺開始前,前端不能得到秒殺位址,防止提前獲取位址,模擬秒殺請求
基於令牌桶演算法實現限流。令牌桶演算法的原理是系統會以乙個恆定的速度往桶裡放入令牌,而如果請求需要被處理,則需要先從桶裡獲取乙個令牌,當桶裡沒有令牌可取時,則拒絕服務。
2、服務層
可以使用redis的減操作,初始化庫存數,每乙個請求減1,然後將請求放在訊息佇列中。如果返回結果小於0(為了防止少賣現象,可以多存放一些請求進訊息佇列,即將閾值0改小),則認為活動結束,返回客戶端。
如何設計乙個秒殺系統
秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...
如何設計乙個秒殺系統
秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...
如何設計乙個秒殺系統
秒殺一般是訪問請求數量遠遠大於庫存數量,只有少部分使用者能夠秒殺成功。秒殺業務流程比較簡單,一般就是下訂單減庫存。瀏覽器端 js 服務端控制器層 閘道器層 服務層利用快取應對讀請求 對類似於12306等購票業務,是典型的讀多寫少業務,大部分請求是查詢請求,所以可以利用快取分擔資料庫壓力。利用快取應對...