從大麥網(wǎng)架構(gòu)學(xué)到的東西
業(yè)務(wù)特點(diǎn)
大麥業(yè)務(wù)鏈條涵蓋了從B端生產(chǎn)、C端銷售、現(xiàn)場(chǎng)換驗(yàn)的全套流程。其業(yè)務(wù)架構(gòu)也經(jīng)過幾個(gè)階段的發(fā)展:

第一階段:保障不健全、設(shè)施不完善;
第二階段:支持部分大型搶票需求;
第三階段:“體系化”承接所有大型搶票需求;
第四階段:“常態(tài)化”體驗(yàn)優(yōu)化;
第一階段
此時(shí)的大麥架構(gòu)還在大麥自己的IDC內(nèi),主要是原有大麥技術(shù)架構(gòu)承擔(dān)需求。此時(shí)的架構(gòu)存在以下幾個(gè)問題:
保障設(shè)施不健全:大麥IDC機(jī)房硬件、快遞均有限制,DB還是Sql Server,很多庫是單庫,不能應(yīng)對(duì)大型搶票時(shí)的挑戰(zhàn);
預(yù)案、限流不健全:系統(tǒng)在面對(duì)高流量時(shí),沒有自我保護(hù)措施;
監(jiān)控運(yùn)維手段零散:定位問題、解決問題耗時(shí)長(zhǎng);
解決方案
這一階段主要是一些零散解決方案,針對(duì)問題解決。比如搭建簡(jiǎn)易版限流方案,做性能優(yōu)化點(diǎn),整體上未體系化解決問題。
第二階段
第二階段由于已經(jīng)被阿里收購,所以架構(gòu)重構(gòu)直接切入阿里域內(nèi)解決方案,逐步替換掉老系統(tǒng)。
這一階段的關(guān)鍵就是新老方案的遷移:
APP鏈路改造:技術(shù)改造重點(diǎn)放在無線端,所有APP流量先進(jìn)入阿里域,再路由到大麥IDC,讓阿里機(jī)房抵擋大量流量;
借助阿里基礎(chǔ)運(yùn)維設(shè)施:由于入口流量直接進(jìn)入阿里域,降級(jí)、限流的動(dòng)作可以依賴于阿里服務(wù)治理平臺(tái)能力做;
建立搶票預(yù)案:圍繞于大型搶票場(chǎng)景做預(yù)案建設(shè),比如商詳頁增加tair緩存,靠tair抗住阿里域流量,建設(shè)流量打到大麥IDC;
第三階段
第三階段針對(duì)于搶票流程上的系統(tǒng)做了體系化升級(jí),完善了搶票流程和可靠保障機(jī)制。升級(jí)后的架構(gòu)可以承接住所有大型搶票需求,用戶體驗(yàn)有所提升。
優(yōu)化動(dòng)作:
精簡(jiǎn)了搜索response過大的問題,降低了對(duì)寬帶的壓力;
在阿里域內(nèi),大型搶票選座流量直接打到了阿里域內(nèi),采用異步和類似ConcurrentHashMap的平衡機(jī)制,解決了大麥IDC選座的緩存一致性問題;
繼續(xù)完善阿里域內(nèi)交易鏈路功能,下單接口全部放在阿里域內(nèi),下單之后訂單同步到大麥IDC內(nèi)服務(wù)履約;
保障流程:
大麥主要是票務(wù)平臺(tái),主要保障的黃金鏈路就是搶票,針對(duì)于這個(gè)鏈路需要建立可靠性保障和SOP。

搶票分為搶票前、搶票中、搶票后等環(huán)節(jié):
搶票前:重點(diǎn)是由業(yè)務(wù)方搶票申報(bào),再由技術(shù)方確認(rèn)是否安排預(yù)演或壓測(cè),由業(yè)務(wù)方判斷預(yù)案執(zhí)行范疇及風(fēng)控級(jí)別;
搶票中:重點(diǎn)監(jiān)控和過程中的應(yīng)急處理,每逢大促,各個(gè)角色聚集一起,各司其職;
圍繞于搶票流程,可靠性保障包括:預(yù)案/預(yù)演/容量等專項(xiàng);
預(yù)案建設(shè):已有成熟的流程不再安排預(yù)演,新玩法需要模擬搶票,提前暴露問題,并建立體驗(yàn)問題預(yù)案;
容量保障:技術(shù)拉取全鏈路最近類似項(xiàng)目壓測(cè)數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù),和線上真實(shí)流量做評(píng)估,分析搶票環(huán)節(jié)是否可以順利支撐,是否存在性能瓶頸,是否需要做限流;
預(yù)案執(zhí)行:在全鏈路中找到核心場(chǎng)景,如:首頁搜索、商品詳情、票務(wù)選座、交易下單、票務(wù)庫存、訂單服務(wù)、無線端等場(chǎng)景建立預(yù)案。同時(shí)將高頻使用緩存信息在活動(dòng)開始30分鐘預(yù)熱到緩存中;
問題復(fù)盤:針對(duì)于每次活動(dòng)出現(xiàn)的問題、客服反饋、線上問題進(jìn)行收集,組織復(fù)盤,并將todo落實(shí)到action上,關(guān)注action執(zhí)行進(jìn)度;
第四階段
在進(jìn)行了全鏈路系統(tǒng)性完善之后,我們依然不能說肯定不會(huì)出現(xiàn)宕機(jī)的問題。因?yàn)閾屍杯h(huán)節(jié)注定是少數(shù)人可以搶到票,搶不到票的可能在輿情瘋狂吐槽。為解決這些問題,我們需要為真正的用戶提供極致體驗(yàn)。
新交易系統(tǒng)上線,融合了大麥交易系統(tǒng)和阿里星環(huán)平臺(tái),渲染接口、下單接口基于星環(huán)實(shí)現(xiàn)大麥特性擴(kuò)展。

星環(huán)帶來的優(yōu)點(diǎn)有2點(diǎn):
依托于共享基礎(chǔ)能力,除了可以復(fù)用共享能力外,還可以參考主站交易的大促方案,比如限流、監(jiān)控日志、問題排查等。基于星環(huán)可以實(shí)現(xiàn)未支付關(guān)單等個(gè)性化能力定制,提高研發(fā)效率;
結(jié)合集團(tuán)風(fēng)控體系,人機(jī)識(shí)別、定制策略等對(duì)非法用戶進(jìn)行了二次攔截,讓真實(shí)用戶搶票體驗(yàn)更好,大大提升了真實(shí)用戶購買率;
為摸清交易鏈路的性能水位,需要做到性能常態(tài)化,每月定時(shí)執(zhí)行壓測(cè)、結(jié)合當(dāng)月各項(xiàng)系統(tǒng)功能,評(píng)估壓測(cè)場(chǎng)景和壓測(cè)目標(biāo),壓測(cè)完成后,更新鏈路現(xiàn)狀,為搶票提供有效數(shù)據(jù)支撐。

之前的可靠性保障規(guī)范不完善,監(jiān)控、預(yù)案、入口不統(tǒng)一。所以建立預(yù)案自動(dòng)化平臺(tái),運(yùn)營(yíng)在配置搶票活動(dòng)時(shí)【搶票開始前】,可以設(shè)置一些預(yù)案;在【搶票進(jìn)行中】可以對(duì)核心場(chǎng)景進(jìn)行統(tǒng)一視圖監(jiān)控,并且有能力實(shí)現(xiàn)人為干預(yù)和控制;在【搶票結(jié)束后】提供歷次搶票數(shù)據(jù),供分析,幫助運(yùn)營(yíng)自助完善,實(shí)現(xiàn)自動(dòng)化流程。

比如針對(duì)于商詳頁,有6-10項(xiàng)降級(jí)預(yù)案(包括本地緩存或tair緩存、三方依賴接口限流、異常降級(jí)等),每個(gè)預(yù)案設(shè)置的值,執(zhí)行時(shí)間都有差異,每次降級(jí)操作都需要人工經(jīng)驗(yàn)判斷,操作繁瑣。這里需要實(shí)現(xiàn)自動(dòng)化或系統(tǒng)容錯(cuò)實(shí)現(xiàn)降級(jí)。
總結(jié)
經(jīng)過以上幾個(gè)階段,大麥從最開始的“原始”狀態(tài)進(jìn)化到了“常態(tài)化”流量壓測(cè)、預(yù)案執(zhí)行新階段,系統(tǒng)可靠性提升,用戶體驗(yàn)提高。后續(xù)還需要在項(xiàng)目熱度智能分析、風(fēng)控自動(dòng)調(diào)節(jié)等方向進(jìn)行持續(xù)優(yōu)化。
