發(fā)10億個(gè)紅包難在哪?
當(dāng)前位置:點(diǎn)晴教程→閑情逸致
→『 微信好文 』
虎嗅注:2015 年微信紅包書,除夕搖一搖總次數(shù) 110 億次,峰值 1400 萬次 / 秒,8.1 億次每分鐘,微信紅包收發(fā)達(dá) 10.1 億次!驚人數(shù)字的背后,騰訊是怎么支撐的?本文作者節(jié)前采訪到微信后臺技術(shù)負(fù)責(zé)人,與大家分享紅包背后的技術(shù)。 本文轉(zhuǎn)自微信公眾號 騰訊大講堂 ( TX_DJT ) 。 4800 倍的挑戰(zhàn) 今年微信紅包方式與去年用戶與用戶之間互發(fā)紅包相比,搖紅包的方式對業(yè)務(wù)量來說是一個(gè)極大的爆發(fā),光是除夕 10:30 送出的一波紅包就達(dá)到了 1.2 億個(gè),已經(jīng)是 2014 年除夕夜峰值的 4800 倍之巨(2014 年峰值每分鐘被拆開紅包數(shù)量僅 2.5W 個(gè))! 發(fā) 10 億紅包,難在哪里? 微信團(tuán)隊(duì)總結(jié)下來有三大難點(diǎn):快——如何保證用戶快速搖到紅包?準(zhǔn)——如何保證搖到的紅包能成功拆開?穩(wěn)——如何保證拆開的紅包能分享出去? 大量用戶在同一時(shí)間搖紅包,瞬間產(chǎn)生每秒千萬級的請求,這個(gè)量級的請求如果不加以疏導(dǎo)處理直接到達(dá)后臺,必定會(huì)導(dǎo)致后端服務(wù)過載甚至崩潰。上文中除夕當(dāng)天后臺監(jiān)控?cái)?shù)據(jù)曲線便能說明一切——在前臺重重的分流減壓下,后臺服務(wù)器負(fù)載仍然瞬間飆升十倍以上。 三大應(yīng)對策略齊上陣 對于以上三個(gè)難點(diǎn),微信后臺開發(fā)團(tuán)隊(duì)主要通過三大應(yīng)對策略應(yīng)對:有損服務(wù),柔性可用,大系統(tǒng)小做 什么是有損服務(wù)?有損服務(wù)是通過精心拆分產(chǎn)品流程,選擇性犧牲一部分?jǐn)?shù)據(jù)一致性和完整性從而保證核心功能絕大多數(shù)運(yùn)行。這是騰訊在 PC 時(shí)代積累下來的一種特色運(yùn)營策略——在資源一定的前提下,互聯(lián)網(wǎng)條件千變?nèi)f化的場景中,量力而為,滿足用戶的核心需求。 微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級,防止引起系統(tǒng)雪崩。 系統(tǒng)降級可以分為兩個(gè)方面,一是把核心功能進(jìn)行分拆和簡化,通過輔助輕量化的服務(wù)實(shí)現(xiàn),確保最短關(guān)鍵路徑的可行,比方說在接入層置入搖紅包邏輯,將每秒千萬級請求轉(zhuǎn)化為每秒萬級的紅包請求,再傳到紅包服務(wù)的后端邏輯,降低雪崩的可能性。 同時(shí)后端采用異步分拆,接收到用戶請求時(shí)僅進(jìn)行合法性驗(yàn)證,驗(yàn)證完成后直接告知成功,后續(xù)業(yè)務(wù)邏輯進(jìn)入異步隊(duì)列進(jìn)行處理,減少了用戶的等待時(shí)間,也極大降低了峰值雪崩的概率。 另 外一方面是采取過載保護(hù)措施。微信紅包的過載保護(hù)在客戶端已提前預(yù)埋了策略,在連接失敗或超時(shí)情況下會(huì)有相應(yīng)提示,減少用戶重復(fù)請求次數(shù)。接入層面也會(huì)進(jìn) 行自我保護(hù),針對頻繁發(fā)出請求的客戶端限制響應(yīng)速度,并對系統(tǒng)負(fù)載劃分出若干等級,達(dá)到不同閾值時(shí)引導(dǎo)客戶端使用不同限速速率;在異常情況出現(xiàn)時(shí),采取減 少紅包數(shù),異步限流降低拆 / 分享紅包的速率等措施減輕服務(wù)器端壓力;與此同時(shí),微信紅包還有全程壓測流程,對整個(gè)業(yè)務(wù)鏈接進(jìn)行自動(dòng)提前評估,防止過載。 在有損服務(wù)思想的重重保護(hù)下,第一波的搖紅包體驗(yàn)活動(dòng)中,微信紅包幾乎滿分通過考驗(yàn),其中過載保護(hù)的作用相當(dāng)明顯,在客戶端、接入層層減壓、過濾,最終僅把十萬級壓力傳遞到后臺。 柔性可用是在有損服務(wù)價(jià)值觀支持下的方法,重點(diǎn)在于實(shí)際上會(huì)結(jié)合用戶使用場景,根據(jù)資源消耗,調(diào)整產(chǎn)品策略,設(shè)計(jì)幾個(gè)級別不同的用戶體驗(yàn)場景,保證盡可能成功返回關(guān)鍵數(shù)據(jù),并正常接受請求,絕不輕易倒下。 柔性服務(wù)更具有產(chǎn)品的思維性質(zhì),意義在于深刻理解產(chǎn)品每一個(gè)場景的核心價(jià)值,把握用戶在每一個(gè)場景中的核心需求,設(shè)計(jì)不同層次的滿足核心訴求的辦法,對柔性服務(wù)在微信紅包中的實(shí)踐,紅包團(tuán)隊(duì)也有相應(yīng)的措施,主要可以分為幾大類。 1、系統(tǒng)容災(zāi):面對大規(guī)模的請求量,系統(tǒng)容災(zāi)必不可少,容災(zāi)一般可分為邏輯層容災(zāi)和數(shù)據(jù)層容災(zāi),這次微信后臺開發(fā)團(tuán)隊(duì)在容災(zāi)布置中采用 30% 切換的邏輯層方案,即核心服務(wù)都能做到最多 1/3 服務(wù)器出問題的情況下自動(dòng)容災(zāi)切換以保證服務(wù)質(zhì)量,提高預(yù)警級別換取系統(tǒng)的可用性。 2、資源隔離:顧名思義就是把資源進(jìn)行隔離減少服務(wù)支路間的影響,從邏輯入手,在資源邏輯中,當(dāng) A 服務(wù)同時(shí)分派任務(wù)給 BC 服務(wù)時(shí),設(shè)定單個(gè)最大分配上限值,避免任意一個(gè)支路出問題影響整個(gè)服務(wù)鏈條,這樣即使部分服務(wù)出現(xiàn)問題也不會(huì)影響到整個(gè)服務(wù)的崩塌。 3、快速拒絕:當(dāng)服務(wù)過載時(shí)盡早拒絕請求,由服務(wù)調(diào)用方換機(jī)重試避免單一服務(wù)器重試過載,快速拒絕和有損服務(wù)中的及早拒絕是一個(gè)概念的方法,從過程的源頭將問題解決,成本越低,影響越小,前端保護(hù)后端的方式來解決問題。 4、 支付分組:從支付環(huán)節(jié)入手,將所有紅包分為 50 個(gè)組,放在 50 個(gè)單獨(dú)的 set 上互不影響,單組 set 出問題最多只影響 1/50 用戶,保證多數(shù)人服務(wù)不受干 擾。分組 set 化也是柔性可用的一個(gè)重要技術(shù)手段,這一思維非常類似于現(xiàn)實(shí)生活中的集裝箱思維——通過標(biāo)準(zhǔn)化,規(guī)?;南潴w設(shè)計(jì),應(yīng)對復(fù)雜多樣的貨物,使 每個(gè)流通環(huán)節(jié)既獨(dú)立又不失靈活。 5、流量預(yù)加載:從客戶端入手,將語音圖片等極消耗流量的資源提前讓客戶端自動(dòng)下載預(yù)置好,提前將流量洪峰疏導(dǎo),并在活動(dòng)當(dāng)天 CDN 將準(zhǔn)備數(shù)百 G 帶寬應(yīng)對,這塊也與過載保護(hù)中的快慢分離是相通的,將耗流量的服務(wù)提前加載避免高峰期間的沖突。 大系統(tǒng)小做應(yīng)該來說,是一種意識,他的核心思想是將功能復(fù)雜較大的系統(tǒng),化大為小,減少模塊耦合,降低關(guān)聯(lián)性,用多個(gè)獨(dú)立的模塊來實(shí)現(xiàn)整體系統(tǒng)的功能,大系統(tǒng)小做采用的是化繁為簡,分而治之,便于開發(fā)和迅速實(shí)現(xiàn)。 微 信紅包如此龐大的后臺系統(tǒng),模塊也相當(dāng)之多,而這次的模塊微信開發(fā)后臺團(tuán)隊(duì)采用了系統(tǒng)高度模塊化的方式,分成一個(gè)個(gè)高度自制的小系統(tǒng),形成高內(nèi)聚低耦合的 格局,每個(gè)模塊之間不會(huì)過分依賴對方,這樣的好處是不會(huì)因?yàn)槿魏我粋€(gè)模塊而影響全部服務(wù),避免牽一發(fā)動(dòng)全身的風(fēng)險(xiǎn),實(shí)現(xiàn)真正的灰度服務(wù)。 海量服務(wù)能力決定成敗 從 2014 的滴滴打車,到 2015 的微信紅包,騰訊用一個(gè)個(gè)案例,去證明自身在海量服務(wù)方面的實(shí)力。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰 訊內(nèi)部一個(gè)叫做 " 海量之道 2.0" 的技術(shù)體系。有損服務(wù),柔性服務(wù),大系統(tǒng)小做三大手段也是脫胎于此體系中。移動(dòng)互聯(lián)網(wǎng)大戰(zhàn)硝煙味愈濃,BAT 都在為爭奪 支付入口使出渾身解數(shù),在業(yè)務(wù)從起步到小跑再到騰飛的過程中,巨頭背后的海量服務(wù)能力將對其最終成敗有著來越發(fā)深遠(yuǎn)的影響。 轉(zhuǎn)載自公眾號 : 騰訊大講堂 原網(wǎng)頁已經(jīng)由 ZAKER 轉(zhuǎn)碼以便在移動(dòng)設(shè)備上查看 原文地址:http://iphone.myzaker.com/l.php?l=54e7e1309490cb5e22000073 該文章在 2015/2/21 10:11:15 編輯過 |
相關(guān)文章
正在查詢... |