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