作者:望京一哥小智
轉載自公衆號 InfoQ
13億人的春節流量,誰家扛得住?

作者 | 小智

昨晚你錯過了多少億?

寫在前面

手機支付普及帶來的便利改變了中國人的春節傳統。過去我們習慣拿一個寫好祝福的紅包,塞錢進去在過年時送給我們的父母、親人、長輩晚輩。手機支付普及後,我們只需要掏出手機,就可以完成所有步驟。過去,紅包代表着喜慶、祝福。現在,紅包還多了一層娛樂的意味,有事兒沒事兒發個紅包玩玩兒。

移動支付唯一的問題在於,如果發紅包的併發流量太高,服務器分分鐘陷入宕機狀態,想撒錢都沒轍。羅振宇在 2019 年的跨年演講中提到:得到原本打算在春晚投放廣告,但是被勸住了,因爲春晚紅包有一條不成文的規定——要想春晚打廣告,產品日活先過億。原因很簡單,用戶量過低,技術很難支撐起春晚級別的高併發流量。

今天我們就帶您盤點一下春晚紅包的宕機史,看看再強的高併發能力在 13 億人的春節傳統面前都是怎樣狼狽不堪的。

微信紅包宕機史

微信紅包推出於 2014 年 1 月 27 日,從上線時間看,很明顯微信團隊瞄準的就是春節。於是,首次上線的微信紅包火了。

2014 年除夕開始,至大年初一 16 時,參與搶微信紅包的用戶超過 500 萬,總共搶紅包 7500 萬次以上。領取到的紅包總計超過 2000 萬個,平均每分鐘領取的紅包達到 9412 個紅包活動最高峯是除夕夜,最高峯期間的 1 分鐘有 2.5 萬個紅包被領取,平均每個紅包在 10 元內。首戰告捷背後,是部分服務功能的宕機,除夕當晚總有那麼幾分鐘紅包發不出去,查看紅包金額也總是出錯。

經過一年的積累沉澱、技術升級,2015 年,微信拿下了當年春晚的廣告互動權。2015 年除夕當日中國微信紅包收發總量達 10.1 億次,春晚微信搖一搖總量達 110 億次。微信紅包成爲年夜飯的主菜單。大家不再忙着發短信,不再忙着看春晚,都在忙着搶紅包。春節聯歡晚會搖一搖互動出現峯值 8.1 億次每分鐘。不難看出,2015 年的紅包流量比起前一年的增長幅度可謂令人咋舌,有理由相信微信技術團隊爲了這次春晚互動做了充足的準備,然而即便如此,小規模的宕機依舊出現了數次。

今年的除夕紅包數據,目測最少超過 7 億人蔘與。大年三十臨近跨年的時間段上,微信紅包不出意外地再次宕機:羣消息收發滯後,微信紅包功能出現問題。小編也因此錯過了一夜暴富的機會。昨夜公司羣搶紅包實況:同事們紛紛表示,可以根據搶到紅包人的地區分佈,得出哪些地方的服務沒有宕機……

13億人的春節流量,誰家扛得住?


BTW,如果你年後有換工作的打算,可以在 拉勾網搜索極客邦科技 投遞簡歷,誠摯期待您的加入。

微信紅包的技術思路

微信紅包有兩大業務特點,兩大業務難點。

特點:

  1. 微信紅包業務比普通商品“秒殺”有更海量的併發要求。
  2. 微信紅包業務要求更嚴格的安全級別。

難點:

  1. 事務級操作量級大。
  2. 事務性要求嚴格。

解決方案:

  1. 系統垂直 SET 化,分而治之。
  2. 邏輯 Server 層將請求排隊,解決 DB 併發問題。
  3. 雙維度庫表設計,保障系統性能穩定。

更多技術細節,你可以在文末附錄區查看。

支付寶紅包宕機史

有媒體人說,微信紅包宕機是因爲沒有經歷過類似雙十一事件的高併發考驗,那麼阿里系的支付寶在做紅包活動時,做到盡善盡美了嗎?答案是也沒有。

根據支付寶官網數據:2016 年除夕,支付寶互動平臺的總參與次數達到 3245 億次,是 2015 年春晚互動次數的 29.5 倍。在 21 點 09 分達到峯值 210 億 / 分鐘。有着阿里雲支撐的支付寶紅包,同樣宕機了數分鐘。

2018 年春晚,淘寶作爲合作方再次登上舞臺。據悉,淘寶技術團隊提前預設了多種極端情況,在 2017 年雙十一基礎上擴容了 3 倍!但實際流量峯值卻是 2017 年雙十一但 15 倍!加上超出預料的新用戶瞬時登錄行文,多年雙十一高併發洗禮下的阿里服務器也宕機了。

支付寶紅包的技術思路

在支付寶團隊看來,春晚活動具有 8 大難點,平時看不起眼的一個問題,在超大規模情況下,就可能被放大:

  1. 登錄問題。
  2. 如何應對洪峯。
  3. 活動獎品控制系統。
  4. 動態技術。
  5. 資源管理。
  6. 實時數據計算能力。
  7. 全鏈路壓測。
  8. 超大規模活動彈性計算能力。

爲應對春晚流量,支付寶團隊做了如下準備:

  1. 相對合理的超大規模壓力預測模型。
  2. 核心鏈路和非核心鏈路徹底梳理。
  3. 大規模生產系統全鏈路壓測。
  4. 高頻次灰度內測和線上小規模活動預熱。
  5. 上千個業務、技術預案和完備的應急響應體系支持。

更多技術細節,你可以在文末附錄區查看。

出人意料的百度紅包

這是百度第一次站上春晚舞臺,作爲紅包活動方出現。許多人此前並不看好百度能把紅包活動做好,畢竟 BAT 裏的 AT 兩家已經連着小範圍宕機多次。但昨晚豬年春晚的紅包互動卻出乎很多人意料之外。

昨晚第一輪搖一搖紅包活動結束後,截至 21:00,全球觀衆參與百度 APP 紅包互動就已經達到了 92 億次。9 億紅包的數額、智能機的進一步普及、互聯網加速下沉鄉鎮、農村,無不讓移動支付裏的紅包熱情強烈迸發。

根據知乎答主「maomaobear」的回答:

任何紅包類、抽獎類活動還會有一個灰色的影子參與其中,這就是中國互聯網的黑產用戶,中國薅羊毛黨手裏掌握大量虛擬資源,它們可以在短時間內產生巨大流量,這部分流量疊加正常流量,也進一步加大了服務器的壓力。

另外,因爲搶紅包這個東西,是有一個流程的,涉及很多外部服務,百度自己的服務器只是其中一個環節。沒下載的用戶下載百度 APP,沒註冊的註冊,註冊的收短信要通過電信運營商,所有網絡需求都要通過硬件。APP 市場的服務器,電信運營商的網絡,機房、光纖等硬件,有一個環節容量不夠,都可能導致宕機。

事實上,春晚當天百度的第一輪紅包互動之後,蘋果應用商店、華爲、小米、三星幾大應用商店全部掛掉,其中蘋果應用商店長達 12 分鐘不能訪問,今年的流量顯然遠超預期。在春晚直播期間,全球觀衆參與百度 APP 紅包互動活動次數達 208 億次!但是,百度扛住了。

據瞭解,爲了準備這次春晚活動,百度下了大力氣做技術儲備:

在確定拿下春晚紅包互動權後,百度成立了一個近千人的項目組,包括產品、研發、運營、客服以及風控,應對爆發數量的需求。在技術方面,百度很早就落實了服務流量隔離、系統升級、專線新增以及服務器擴容等工作,提前進行了多輪全鏈路壓力測試和多輪的方案預演。在硬件資源上,除了常規的擴容,百度還使用專有硬件計算(特定 CPU,或者 GPU、FPGA 等硬件),處理大規模 AI 計算需求;準備最大規模硬件資源,處理十億級別併發需求。據說整個系統在內部都是全自動擴容縮容,數萬臺機器,響應每秒數千萬的請求,並支持快速擴展支持更多請求處理。

值得一提的是百度並不只是靠計算能力硬抗,百度有小程序的技術優勢。百度這次的搖一搖紅包和視頻紅包等都採用小程序開發,用小程序技術支持更靈活的開發和預加載機制,不僅能夠應對更大流量更大併發,降低硬件資源消耗,提升效率,還有更好的用戶體驗。


擴展閱讀

微信紅包誘導點擊過程分析

搶紅包案例分析以及代碼實現

高併發-「搶紅包案例」之二:使用悲觀鎖方式修復紅包超發的bug

高併發-「搶紅包案例」之三:使用樂觀鎖方式修復紅包超發的bug

搶紅包案例之四:使用Redis+Lua實現搶紅包並異步持久化到數據庫

扛住了史上最高金額的春晚紅包流量衝擊,百度是如何做到的

相關文章