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