微信紅包海量運營:發10億個紅包難在哪裏?(組圖)

來源: 搜狐財經 2015-02-20 11:58:02 [] [舊帖] [給我悄悄話] 本文已被閱讀: 次 (7972 bytes)

  

 

  虎嗅注:2015年微信紅包書,除夕搖一搖總次數110億次,峰值1400萬次/秒,8.1億次每分鍾,微信紅包收發達10.1億次!驚人數字的背後,騰訊是怎麽支撐的?本文作者節前采訪到微信後台技術負責人,與大家分享紅包背後的技術。

  本文轉自微信公眾號 騰訊大講堂 (TX_DJT)。

  4800倍的挑戰

  今年微信紅包方式與去年用戶與用戶之間互發紅包相比,搖紅包的方式對業務量來說是一個極大的爆發,光是除夕10:30送出的一波紅包就達到了1.2億個,已經是2014年除夕夜峰值的4800倍之巨(2014年峰值每分鍾被拆開紅包數量僅2.5W個)!

  

 

  發10億紅包,難在哪裏?

  微信團隊總結下來有三大難點:快——如何保證用戶快速搖到紅包?準——如何保證搖到的紅包能成功拆開?穩——如何保證拆開的紅包能分享出去?

  大量用戶在同一時間搖紅包,瞬間產生每秒千萬級的請求,這個量級的請求如果不加以疏導處理直接到達後台,必定會導致後端服務過載甚至崩潰。上文中除夕當天後台監控數據曲線便能說明一切——在前台重重的分流減壓下,後台服務器負載仍然瞬間飆升十倍以上。

  三大應對策略齊上陣

  對於以上三個難點,微信後台開發團隊主要通過三大應對策略應對:有損服務,柔性可用,大係統小做

  什麽是有損服務?有損服務是通過精心拆分產品流程,選擇性犧牲一部分數據一致性和完整性從而保證核心功能絕大多數運行。這是騰訊在PC時代積累下來的一種特色運營策略——在資源一定的前提下,互聯網條件千變萬化的場景中,量力而為,滿足用戶的核心需求。

  微信紅包的核心點是搖,拆,分享紅包,整個係統設計時必須盡最大可能保證這三個步驟一氣嗬成,任何關聯係統出現異常的時候馬上進行係統降級,防止引起係統雪崩。

  係統降級可以分為兩個方麵,一是把核心功能進行分拆和簡化,通過輔助輕量化的服務實現,確保最短關鍵路徑的可行,比方說在接入層置入搖紅包邏輯,將每秒千萬級請求轉化為每秒萬級的紅包請求,再傳到紅包服務的後端邏輯,降低雪崩的可能性。

  同時後端采用異步分拆,接收到用戶請求時僅進行合法性驗證,驗證完成後直接告知成功,後續業務邏輯進入異步隊列進行處理,減少了用戶的等待時間,也極大降低了峰值雪崩的概率。

  

 

  另外一方麵是采取過載保護措施。微信紅包的過載保護在客戶端已提前預埋了策略,在連接失敗或超時情況下會有相應提示,減少用戶重複請求次數。接入層麵也會進行自我保護,針對頻繁發出請求的客戶端限製響應速度,並對係統負載劃分出若幹等級,達到不同閾值時引導客戶端使用不同限速速率;在異常情況出現時,采取減少紅包數,異步限流降低拆/分享紅包的速率等措施減輕服務器端壓力;與此同時,微信紅包還有全程壓測流程,對整個業務鏈接進行自動提前評估,防止過載。

  

 

  柔性可用是在有損服務價值觀支持下的方法,重點在於實際上會結合用戶使用場景,根據資源消耗,調整產品策略,設計幾個級別不同的用戶體驗場景,保證盡可能成功返回關鍵數據,並正常接受請求,絕不輕易倒下。

  柔性服務更具有產品的思維性質,意義在於深刻理解產品每一個場景的核心價值,把握用戶在每一個場景中的核心需求,設計不同層次的滿足核心訴求的辦法,對柔性服務在微信紅包中的實踐,紅包團隊也有相應的措施,主要可以分為幾大類。

  1、係統容災:麵對大規模的請求量,係統容災必不可少,容災一般可分為邏輯層容災和數據層容災,這次微信後台開發團隊在容災布置中采用30%切換的邏輯層方案,即核心服務都能做到最多1/3服務器出問題的情況下自動容災切換以保證服務質量,提高預警級別換取係統的可用性。

  2、資源隔離:顧名思義就是把資源進行隔離減少服務支路間的影響,從邏輯入手,在資源邏輯中,當A服務同時分派任務給BC服務時,設定單個最大分配上限值,避免任意一個支路出問題影響整個服務鏈條,這樣即使部分服務出現問題也不會影響到整個服務的崩塌。

  3、快速拒絕:當服務過載時盡早拒絕請求,由服務調用方換機重試避免單一服務器重試過載,快速拒絕和有損服務中的及早拒絕是一個概念的方法,從過程的源頭將問題解決,成本越低,影響越小,前端保護後端的方式來解決問題。

  4、支付分組:從支付環節入手,將所有紅包分為50個組,放在50個單獨的set上互不影響,單組set出問題最多隻影響1/50用戶,保證多數人服務不受幹擾。分組set化也是柔性可用的一個重要技術手段,這一思維非常類似於現實生活中的集裝箱思維——通過標準化,規模化的箱體設計,應對複雜多樣的貨物,使每個流通環節既獨立又不失靈活。

  大係統小做應該來說,是一種意識,他的核心思想是將功能複雜較大的係統,化大為小,減少模塊耦合,降低關聯性,用多個獨立的模塊來實現整體係統的功能,大係統小做采用的是化繁為簡,分而治之,便於開發和迅速實現。

  微信紅包如此龐大的後台係統,模塊也相當之多,而這次的模塊微信開發後台團隊采用了係統高度模塊化的方式,分成一個個高度自製的小係統,形成高內聚低耦合的格局,每個模塊之間不會過分依賴對方,這樣的好處是不會因為任何一個模塊而影響全部服務,避免牽一發動全身的風險,實現真正的灰度服務。

  海量服務能力決定成敗

  從2014的滴滴打車,到2015的微信紅包,騰訊用一個個案例,去證明自身在海量服務方麵的實力。事實上,真正支撐起微信紅包順暢運營的幕後英雄,正是騰訊內部一個叫做“海量之道2.0”的技術體係。有損服務,柔性服務,大係統小做三大手段也是脫胎於此體係中。移動互聯網大戰硝煙味愈濃,BAT都在為爭奪支付入口使出渾身解數,在業務從起步到小跑再到騰飛的過程中,巨頭背後的海量服務能力將對其最終成敗有著來越發深遠的影響。

 
請您先登陸,再發跟帖!

發現Adblock插件

如要繼續瀏覽
請支持本站 請務必在本站關閉/移除任何Adblock

關閉Adblock後 請點擊

請參考如何關閉Adblock/Adblock plus

安裝Adblock plus用戶請點擊瀏覽器圖標
選擇“Disable on www.wenxuecity.com”

安裝Adblock用戶請點擊圖標
選擇“don't run on pages on this domain”