本文根據(jù)郭東白在首屆阿里巴巴在線技術(shù)峰會上的分享整理而成。他首先介紹了AliExpress電商系統(tǒng)的理論基礎(chǔ),通過頁面間跳出率的計算引出了全棧優(yōu)化的思路。然后,他介紹了AliExpress平臺的設(shè)計思路和性能優(yōu)化過程。緊接著,他分享了AliExpress使用過的幾個有效的優(yōu)化策略:動態(tài)加速、靜態(tài)化+ESI、元素合并請求、CDN調(diào)度優(yōu)化等。最后,他用實例展示了性能優(yōu)化帶來的結(jié)果,并對架構(gòu)設(shè)計的過程提出了幾點思考和總結(jié)。
整個系統(tǒng)的理論基礎(chǔ)

這張圖代表流量分布和跳出率的關(guān)系。一個用戶放棄使用一個網(wǎng)站或者APP的行為叫做跳出。上圖中,橫軸代表延遲區(qū)間,縱軸代表流量分布。綠色的曲線代表顧客來網(wǎng)站或者APP的流量分布,可以發(fā)現(xiàn)大部分流量分布在幾百到一千毫秒,隨著時間延遲的增加,跳出率變高。
整個系統(tǒng)計算時,使用轉(zhuǎn)化率公式:轉(zhuǎn)化率=1-跳出率。在發(fā)生性能故障的時候,比如有少部分機器出現(xiàn)延遲大大增加的情況,我們會發(fā)現(xiàn)高速性能的流量會變少,有很長延時的流量會增加,跳去率也很快地爬升上去。
這個過程表明,如果延遲越大,那么延遲跳出率會變得越來越高,即轉(zhuǎn)化率變得越來越低。我們可以把虛線看作是優(yōu)化前,實現(xiàn)看作是優(yōu)化后,其中的部分就是優(yōu)化得到的新的轉(zhuǎn)化率。

我們做更深一步的討論。上圖中,紅色代表轉(zhuǎn)化率,藍色代表性能區(qū)間的分布。假設(shè)我們把性能從a秒壓縮到3秒時,轉(zhuǎn)化率的回報是圖中綠色的部分。這些回報是怎么得到的?隨著延遲越大,轉(zhuǎn)化率越低,由于回報是單調(diào)減的函數(shù),所以壓縮之后得到的回報就是圖中綠色的部分。如果我們知道壓縮的時間,我們就可以預(yù)測出單個頁面上得到的回報,這個回報稱為Performance Loss。

接下來,我們進行從A頁面到B頁面的理論跳出率的計算。如上圖所示,A是一個頁面,0、1、2、3是它的前序頁面,end代表跳出頁面。我們發(fā)現(xiàn),出口的跳出率=經(jīng)過補償后的所有跳出率-自然跳出率。其中,自然跳出率是指自己因為對商品內(nèi)容不滿意、評價不滿意而產(chǎn)生的自然跳出。

在此基礎(chǔ)上,我們可以將其推廣到所有頁面。一個大的網(wǎng)站可能有數(shù)百個頁面,比如上圖中的兩條鏈路: 搜索——詳情——訂單 ; 商鋪——商鋪詳情——訂單 。
在這種關(guān)系下,如果我們把每條鏈路的跳出率算出來,其實我們就得到了每條鏈路的理論最大流量,這樣我們就知道了最終頁面的最大流量。這其實就是一個全棧性能損耗的過程,我們可以知道每個細小的過程對全局的貢獻。這對于優(yōu)化方案的制定非常重要。在做優(yōu)化方案的時候,我們可以選擇一個頁面做嘗試,準(zhǔn)確度量一個頁面的回報,這樣就可以明確知道一種優(yōu)化方案對整個系統(tǒng)的貢獻,即本次優(yōu)化對電商系統(tǒng)的訂單回報量。
平臺設(shè)計

平臺是獨立于業(yè)務(wù)領(lǐng)域的。針對不同的業(yè)務(wù)領(lǐng)域,有不同的優(yōu)化方案,顯示在圖中左下部分。
平臺的功能是:
把當(dāng)前的性能變得可視化;
實時度量目前的性能水平;
對全鏈路做一個性能的監(jiān)控;
所有的領(lǐng)域都可以接到這個平臺上;
做一個全量的度量。
平臺其實就是將性能優(yōu)化的回報變成一個可度量的、非常容易看到的結(jié)果。在整個試驗的過程中,數(shù)據(jù)是不斷積累的,數(shù)據(jù)會帶來準(zhǔn)確的度量結(jié)果,度量結(jié)果則決定是否將優(yōu)化在全棧進行推廣。
性能優(yōu)化過程

首先,應(yīng)該有很多業(yè)務(wù)模塊來收集用戶的行為數(shù)據(jù)(請求時間、建聯(lián)時間等),然后數(shù)據(jù)經(jīng)過采集系統(tǒng)進行處理。處理完的數(shù)據(jù)有兩種分析方式:離線分析、實時分析,區(qū)別在于離線的處理量比較大一些。分析的結(jié)果都會存在一個業(yè)務(wù)數(shù)據(jù)庫中,最終會送到cache layer中做追溯和同比。后端會支持很多不同的應(yīng)用場景,比如報警、監(jiān)控、報表。