每秒50W筆交易,阿里雙十一,架構如何優(yōu)化到極致!
2019 天貓雙 11 交易峰值創(chuàng)下新紀錄,達到 54.4 萬筆/秒,是 2009 年第一次雙 11 的1360倍。
絢麗數(shù)字背后,是架構的極致優(yōu)化。
阿里雙十一是典型的電商秒殺系統(tǒng),這里我們總結幾種常見的高并發(fā)場景:
- 電商秒殺,并發(fā)量極高,商品SKU豐富,系統(tǒng)的瓶頸在商品、訂單的讀寫;
- Feed流業(yè)務,像微博等,系統(tǒng)性能瓶頸在于熱點數(shù)據(jù)的讀并發(fā)請求;
- IM業(yè)務,用戶點對點,數(shù)據(jù)讀寫均勻,數(shù)據(jù)訪問沖突較小;
從業(yè)務場景和挑戰(zhàn)難度上,電商秒殺難度最大。那么對于雙十一這種場景,業(yè)務架構和系統(tǒng)架構上需要如何優(yōu)化呢?
交易系統(tǒng)常見的整體架構
- 用戶發(fā)起(瀏覽器/APP),最上層,面向用戶
- 業(yè)務層,對用戶請求進行業(yè)務邏輯判斷,校驗
- 核心系統(tǒng)層,訂單服務、商品服務,提供交易的核心邏輯與數(shù)據(jù)訪問
基于這個架構,架構師們應該如何優(yōu)化?
主要有:
- 做好鏈路流量過濾攔截
- 充分利用緩存高性能
- 提前進行容量規(guī)劃
- 優(yōu)秀的架構設計
一、鏈路流量過濾攔截
電商高并發(fā)之所以掛,大部分原因是請求壓力落到了數(shù)據(jù)層,數(shù)據(jù)讀寫鎖沖突嚴重。交易對數(shù)據(jù)一致性要求高,進一步導致了響應耗時高,導致上層所有請求超時,最終服務宕機。
雙十一屬于秒殺,瞬時讀寫高并發(fā)場景。此時我們可以采用哪些業(yè)務手段:
- 用戶請求層面,限制用戶x秒內(nèi)只能提交一次,從而降低系統(tǒng)負載;
- 雙十一提前加購物車,將商品庫存扣除,將交易流程變短,對數(shù)據(jù)寫入時間盡可能分散;
- 業(yè)務折中,比如不同的場次,將交易分散到全天;
- 服務熔斷降級,當系統(tǒng)流量大于承載能力時,拋棄部分流量保證系統(tǒng)整體穩(wěn)定性。
PS. 大家雙十一剁手,遇到服務器開小差的頁面提示。
二、充分利用緩存
業(yè)務系統(tǒng),大多是讀多寫少場景:
- 商品的查詢,讀請求,量大
- 購物車的查詢,讀請求,量大
- 添加購物車、下單和支付,寫請求,相比于讀請求,量小
因此利用緩存的高性能,將99%讀請求攔截在數(shù)據(jù)庫之外,保證數(shù)據(jù)庫的高可靠,是我們常用的方案。
三、提前容量規(guī)劃
互聯(lián)網(wǎng)企業(yè),針對節(jié)日對流量進行預估。需要通過流量來預判機器是否擴容,數(shù)據(jù)庫是否分庫。這些都是架構師必備的系統(tǒng)容量規(guī)劃的能力。
容量規(guī)劃的核心是QPS預估,以及單機承載能力評估。
QPS預估有很多方法,最常用的就是業(yè)務預估。
歷年雙十一交易額曲線
通過歷史的流量,可以很好的預測當前的QPS,從而提前布局架構升級。比如阿里每年的成交都以”非常優(yōu)美“的曲線增長。
如何評估一個業(yè)務,一個服務單機能的極限QPS呢?
答:真實線上環(huán)境的全鏈路壓力測試。
四、優(yōu)秀的架構設計
通過以上的做法,我們能大大提高節(jié)日下高并發(fā)下的架構性能。但是一個完整的電商后臺,我們還需要更多的架構設計,比如同步、異步模式的靈活運用。
傳統(tǒng)的架構,交易和物流進行耦合,但是高級架構師會引入消息中間件,將同步的物流單創(chuàng)建,轉(zhuǎn)化為消息發(fā)送,異步創(chuàng)建物流單,大大提高了交易核心的穩(wěn)定性。
作為百萬年薪級別的架構師,他們?nèi)绾螒獙﹄p十一的整體架構的呢?
- 全鏈路的頂層設計,具備高度抽象的能力,必知必會;
- 微服務架構設計的高可用、高并發(fā)設計方法論與實踐,必知必會;
- 業(yè)務折衷與架構容錯能力,廣義負載均衡設計方法與實踐,必知必會。
【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】
【責任編輯:趙寧寧 TEL:(010)68476606】





























