­

如何做好電商大促的容量規劃

  • 2019 年 12 月 4 日
  • 筆記

下雪了,注意保暖

在進行整體電商架構設計過程中,關注系統的穩定性是很重要的工作,也是對架構師能力的一種考察,特別是在電商系統準備搞一次大促時,合理的對系統進行容量規劃就顯得尤為重要。

穩定性保障的一個難點是需要面對不同的複雜的用戶模型,所以應對策略有所不同。容量規劃,就是對複雜業務場景的分析,通過一定的技術手段(如壓力測試),來達到對資源合理擴容、有效規劃的過程。

容量規劃的場景分析

不能脫離業務場景空談技術,需要業務場景入手來分析。

對於電商來說,核心鏈路就是交易鏈路。就是用戶要能登錄,然後能通過瀏覽商品詳情頁下單訂購,或者加購物車,通過購物車進行訂購結算,這個過程中還要進行各種優惠的批價處理,庫存的判斷等等,形成訂購之後,最終還要能夠支付成功,一個完整的交易支付流程才算走完。

在大促的峰值時刻,絕大部分用戶選購什麼商品,早已加入到了購物車中,且各種優惠券也已經申領成功,就等着最後這個時間點直接下單完成訂購。所以,在大促這個場景下,交易下單這個環節是核心中的核心。

因為這個時間點的交易流量實在是太高了,所以近兩年電商也改變了一些玩法,其目的就是希望減少峰值流量,讓流量在整個大促階段更加均勻。具體的運營和玩法就不展開了。

所以大促的容量規劃,就是在大促零點峰值時刻,評估好交易流量,再進一步轉化一下,就是每秒的交易訂單峰值。

下圖常用的路徑分析示例,用戶首先從首頁、大促會場或者微信里的分享頁面轉化過來,然後通過搜索、店鋪、詳情頁以及購物車進行最後的轉化,形成訂購下單和最終的支付。

具體數值的評估上,可以跟產品運營團隊共同討論,整體的業務目標由運營團隊給出,比如 GMV 目標收入,UV、PV、轉化率、客單價以及商品單價,這些都是業務目標。通過這些業務數據,根據上圖的路徑逐步分解,就會逐步得出每一層的流量數據。

假設大促會場會有 500 萬 UV,根據 GMV 和客單價,如果要完成目標,推導出到詳情頁的轉化率需要達到 60%(產品運營需要努力達成這個業務目標),那詳情頁的 UV 就是 300 萬;根據用戶訪問行為分析,對詳情頁的各個應用產生的 QPS 再做一個評估,這樣單個應用的容量值就有了,然後再進一步向下轉化,能夠形成訂購,形成加購物車的又有多少,再進行評估,最後就可以得出一個交易下單的峰值以及支付的峰值。

計算出峰值後,還要與歷年評估的峰值數據,以及實際的峰值數據進行對比,根據對比情況進行調整。評估出來的這個峰值,就是系統要承諾支撐的容量,因為只有達到這個容量值,才能支撐業務完成對應的業務目標。

總結來說,這就是一個根據業務 GMV、UV 等目標,對技術上的交易下單峰值這個核心指標進行推導的過程。

接下來就根據評估的各個應用和基礎服務需要承擔的流量,先擴容一輪,同時開始構造數據模型和壓測模型來模擬真實流量,以此驗證系統是否能夠達標,過程中再進行局部的擴容和優化。

一般來說,先進行單鏈路壓測,比如購物車訂購,詳情頁訂購等場景的壓測,達標後再進行多鏈路壓測,最後再進行全鏈路壓測,直至達成目標。為了能夠保有一定的容量緩衝,最後幾輪壓測,會將壓測流量調整到目標值的 120% 或 150%,來保證系統能夠應對足夠極端的場景,這樣才能夠遊刃有餘地實現 100% 的目標。

構造壓測的數據模型

如何構造壓測的數據模型呢?這是一個比較複雜的問題,通常情況下,可以從兩方面入手。

一方面,數據模型要接近真實場景。這就需要不斷地積累經驗,記錄早期大促的詳細數據和真實場景(比如不同用戶購物車裡的商品數量、優惠策略、不同渠道比例等,以及各種運營活動的玩法),這樣可以最大程度地模擬真實的用戶訪問模型。

像阿里做得比較極致,可以通過 BI 系統,將往年模型和當年模型進行分析比對,直接生成對應的數據模型,甚至是多套模型。

另一方面,數據量要接近真實場景。數據量有很多維度,比如用戶數量、商品數量、店鋪數量、優惠券數量等等。

一般會通過數據工廠這樣的工具平台,結合運營團隊給出的數據量評估,快速製造出對應量級的數據。

另一種方式就是從線上將真實數據,進行敏感信息脫敏處理後,導出到另一張影子表中,專門提供給壓測使用,這樣做的好處是不會污染線上運行數據。

總結

容量規劃工作,單純靠技術能力是無法解決的,需要經驗和數據的積累,到了阿里這個體量就必須藉助人工智能和各類分析算法這樣更高級的手段才能解決。

容量問題,也不是簡簡單單通過資源擴容這種成本投入就可以解決的,擴容是最後的執行手段,但是怎麼合理的、科學的擴容,就需要有合理的規劃。

當業務體量和複雜度到達一定程度時,就要依靠技術人員對業務的深入理解。能夠合理規劃業務、技術和數據模型,是需要一些經驗積累,以及在各類極端場景下的經歷。

在如此複雜的技術體系,也只有在同樣複雜的場景下才會被催生出來,才會有存在意義。

所以需要在學習借鑒時,還要從實際場景出發,慢慢積累。