揭祕:2018阿里雙11秒殺背後的技術

揭秘:2018阿里雙11秒殺背後的技術


在今天雙 11 這個萬眾狂歡的節日,對於阿里員工來說,每個環節都將面臨前所未有的考驗,特別是技術環節,今天我們就一起來探討下雙11天量交易額背後的技術。


01:阿里雙11秒殺場景

揭秘:2018阿里雙11秒殺背後的技術


今日凌晨零點,2018年天貓雙11全球狂歡節,根據現場實時數據,雙11開場2分05秒破百億,26分03秒破500億,1小時47分26秒破千億。

根據公開數據,在2017年雙11購物狂歡節上,開場28秒鐘成交額破10億, 3分01秒成交額破百億,9小時04秒破千億。交易峰值32.5萬/秒,支付峰值25.6萬/秒,刷新全球紀錄。同時誕生的還有數據庫處理峰值,4200萬次/秒。

幾乎毫無懸念,今年天貓雙11將刷新去年1682億的銷售記錄,技術的各種峰值數據也將再次打破全球記錄。

然而在這樣的業務場景下,背後是靠什麼樣的技術來支持如此龐大的秒殺場景?

02:阿里雙11背後的技術

揭秘:2018阿里雙11秒殺背後的技術


1.雲計算

利用雲計算彈性能力,支撐交易峰值每秒32.5萬筆、支付峰值每秒25.6萬筆的混合雲彈性架構。

2.分佈式消息引擎

在雙11當天實現萬億級消息流轉。

3.Docker技術

交易核心應用容器化撐起雙11交易下單峰值,解放資源的超大規模Docker化技術。

4.在線交易的數據實時和離線計算能力

支撐全球最大規模在線交易的數據實時和離線計算能力,包括承載阿里巴巴集團核心大數據的離線計算平臺,以及雙十一保證每秒處理億條日誌的計算。

5.阿里人工智能

在搜索、推薦以及客服場景下的創新應用,包括人工智能賦能的數千家品牌商家店鋪的個性化運營和粉絲會員的精準營銷。

6.VR技術

虛擬購物環境背後的VR技術。

7.前端技術

應對前端極限挑戰的淘寶直播首屏秒開,以及應用世界級開源跨平臺移動開發工具Weex實現雙11會場幾近全覆蓋,實現全網首屏渲染完美踐行“秒開”體驗。

8.監控技術

千萬量級監控項,PB級監控數據,億級報警通知背後的技術。

9.物流技術

菜鳥通過包裹預測、供應鏈入庫、訂單下沉、訂單路由調度、電子面單及智能分單,以及末端小件員,涉及十億級包裹的雙11之戰。

總之,雙11將涉及:基礎設施、存儲、中間件、雲計算、業務架構、大數據、認知計算與人工智能、交互技術等技術領域。

由於篇幅有限無法完全詳細展開,我就以其中一個大家最關心的雙11秒殺場景為例,貫穿這些部分技術的應用和設計思路。

03:雙11秒殺架構設計思路

秒殺系統特點是併發量極大,但實際秒殺成功的請求數量卻很少,所以如果不在前端攔截很可能造成數據庫讀寫鎖衝突,甚至導致死鎖,最終請求超時。

很重要的設計思路:將請求攔截在系統上游,降低下游壓力。

1.充分利用分佈式緩存(tair+redis)

利用緩存可極大提高系統讀寫速度。

2.充分利用消息中間件削峰

這裡有相關的阿里消息中間件(Notify和MetaQ),以及開源的

(ActiveMQ、Kafka等)。

消息隊列可以削峰,將攔截大量併發請求,這也是一個異步處理過程,後臺業務根據自己的處理能力,從消息隊列中主動的拉取請求消息進行業務處理。

3.前端設計優化

  • 頁面靜態化:將活動頁面上的所有可以靜態的元素全部靜態化,並儘量減少動態元素,通過CDN來抗峰值。
  • 禁止重複提交:用戶提交之後按鈕置灰,禁止重複提交,防止一秒鐘內多次寫入數據庫。
  • 用戶限流:在某一時間段內只允許用戶提交一次請求,比如可以採取IP限流

4.後端設計優化

1)服務端控制器層(網關層)

2)限制uid(UserID)訪問頻率:我們上面攔截了瀏覽器訪問的請求,但針對某些惡意攻擊或其它插件,在服務端控制層需要針對同一個訪問uid,限制訪問頻率。

3)服務層

上面只攔截了一部分訪問請求,當秒殺的用戶量很大時,即使每個用戶只有一個請求,到服務層的請求數量還是很大。比如我們有100W用戶同時搶100臺手機,服務層併發請求壓力至少為100W。

4)採用消息隊列緩存請求

既然服務層知道庫存只有100臺手機,那完全沒有必要把100W個請求都傳遞到數據庫啊,那麼可以先把這些請求都寫到消息隊列緩存一下,數據庫層訂閱消息減庫存,減庫存成功的請求返回秒殺成功,失敗的返回秒殺結束。

5)利用緩存應對讀請求:比如雙11秒殺搶購,是典型的讀多寫少業務,大部分請求是查詢請求,所以可以利用緩存分擔數據庫壓力。

6)利用緩存應對寫請求:緩存也是可以應對寫請求的,比如我們就可以把數據庫中的庫存數據轉移到Redis緩存中,所有減庫存操作都在Redis中進行,然後再通過後臺進程把Redis中的用戶秒殺請求同步到數據庫中。

5.數據庫層

數據庫層是最脆弱的一層,一般在應用設計時在上游就需要把請求攔截掉,數據庫層只承擔“能力範圍內”的訪問請求。

所以,上面通過在服務層引入隊列和緩存,讓最底層的數據庫高枕無憂。

淘寶在09年的時候就已經提前把數據庫按照業務進行垂直拆分,再結合業務需要進行水平拆分,詳細可以參考:淘寶發展歷程最具決定性的一次技術架構演變。

現在對數據庫的拆分,都是利用數據庫層中間件(淘寶 tddl),來進行無縫對數據庫的侵入設計。

除此以外還會涉及到分佈式小文件存儲以及搜索引擎,以及服務器集群監控等技術,詳細可以參考以下內容:

揭秘:2018阿里雙11秒殺背後的技術

該專題獲取方式

關注+轉發後,私信關鍵詞 【雙11】即可獲取!

重要的話講兩遍,轉發、轉發後再發私信,才可以拿到哦!


分享到:


相關文章: