摘要:微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰訊內(nèi)部一個(gè)叫做海量之道的技術(shù)體系。
編者按:
微信這么大的流量,尤其是瞬間的峰值,對(duì)于任何團(tuán)隊(duì)和架構(gòu)師都是一個(gè)極大的挑戰(zhàn),我們也在想,微信團(tuán)隊(duì)會(huì)用什么樣的辦法扛住了搶紅包的流量,正巧今天騰訊大講堂的公共賬號(hào)就分發(fā)出了這篇文章,盡管沒有從具體的技術(shù)細(xì)節(jié)上介紹,但在宏觀策略上還是相當(dāng)?shù)赜袑W(xué)習(xí)的價(jià)值 ,優(yōu)才學(xué)院作為培養(yǎng)全棧工程師和未來架師的團(tuán)隊(duì),轉(zhuǎn)載并加以注釋,分享給大家。
進(jìn)入搶紅包環(huán)節(jié),后臺(tái)數(shù)據(jù)瞬間飆升400倍的挑戰(zhàn)
今年微信紅包方式與去年用戶與用戶之間互發(fā)紅包相比,搖紅包的方式對(duì)業(yè)務(wù)量來說是一個(gè)極大的爆發(fā),光是除夕10:30送出的一波紅包就達(dá)到了1.2億個(gè),已經(jīng)是2014年除夕夜峰值的400倍之巨(2014年峰值每分鐘被拆開紅包數(shù)量僅2.5W個(gè))!
微信團(tuán)隊(duì)總結(jié)下來有三大難點(diǎn):
快——如何保證用戶快速搖到紅包?
準(zhǔn)——如何保證搖到的紅包能成功拆開?
穩(wěn)——如何保證拆開的紅包能分享出去?
大量用戶在同一時(shí)間搖紅包,瞬間產(chǎn)生每秒千萬級(jí)的請(qǐng)求,這個(gè)量級(jí)的請(qǐng)求如果不加以疏導(dǎo)處理直接到達(dá)后臺(tái),必定會(huì)導(dǎo)致后端服務(wù)過載甚至崩潰。上文中除夕當(dāng)天后臺(tái)監(jiān)控?cái)?shù)據(jù)曲線便能說明一切——在前臺(tái)重重的分流減壓下,后臺(tái)服務(wù)器負(fù)載仍然瞬間飆升十倍以上。
**
三大應(yīng)對(duì)策略齊上陣**
對(duì)于以上三個(gè)難點(diǎn),微信后臺(tái)開發(fā)團(tuán)隊(duì)主要通過三大應(yīng)對(duì)策略應(yīng)對(duì):有損服務(wù),柔性可用,大系統(tǒng)小做有損服務(wù)-追求高可用和快速響應(yīng)。
什么是有損服務(wù)?有損服務(wù)是通過精心拆分產(chǎn)品流程,選擇性犧牲一部分?jǐn)?shù)據(jù)一致性和完整性從而保證核心功能絕大多數(shù)運(yùn)行。這是騰訊在PC時(shí)代積累下來的一種特色運(yùn)營策略——在資源一定的前提下,互聯(lián)網(wǎng)條件千變?nèi)f化的場(chǎng)景中,量力而為,滿足用戶的核心需求。
微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩
。
系統(tǒng)降級(jí)可以分為兩個(gè)方面,一是把核心功能進(jìn)行分拆和簡化,通過輔助輕量化的服務(wù)實(shí)現(xiàn),確保最短關(guān)鍵路徑的可行,比方說在接入層置入搖紅包邏輯,將每秒千萬級(jí)請(qǐng)求轉(zhuǎn)化為每秒萬級(jí)的紅包請(qǐng)求,再傳到紅包服務(wù)的后端邏輯,降低雪崩的可能性。
點(diǎn)評(píng):有損服務(wù)就是讓重要的事情先做,重要的人物先行。這在現(xiàn)實(shí)中也很常見,軍人買票優(yōu)先,領(lǐng)導(dǎo)視察封路,讓領(lǐng)導(dǎo)車先行,我等小民等待也是這個(gè)路子。
同時(shí)后端采用異步分拆,接收到用戶請(qǐng)求時(shí)僅進(jìn)行合法性驗(yàn)證,驗(yàn)證完成后直接告知成功,后續(xù)業(yè)務(wù)邏輯進(jìn)入異步隊(duì)列進(jìn)行處理,減少了用戶的等待時(shí)間,也極大降低了峰值雪崩的概率。
耗時(shí)最長的入賬操作,直接跳過,異步處理
另外一方面是采取過載保護(hù)措施:
微信紅包的過載保護(hù)在客戶端已提前預(yù)埋了策略,在連接失敗或超時(shí)情況下會(huì)有相應(yīng)提示,減少用戶重復(fù)請(qǐng)求次數(shù)。接入層面也會(huì)進(jìn)行自我保護(hù),針對(duì)頻繁發(fā)出請(qǐng)求的客戶端限制響應(yīng)速度,并對(duì)系統(tǒng)負(fù)載劃分出若干等級(jí),達(dá)到不同閾值時(shí)引導(dǎo)客戶端使用不同限速速率;在異常情況出現(xiàn)時(shí),采取減少紅包數(shù),異步限流降低拆/分享紅包的速率等措施減輕服務(wù)器端壓力;與此同時(shí),微信紅包還有全程壓測(cè)流程,對(duì)整個(gè)業(yè)務(wù)鏈接進(jìn)行自動(dòng)提前評(píng)估,防止過載。
點(diǎn)評(píng):在前端擋住對(duì)后端流量的進(jìn)入,比如出現(xiàn)通信失敗時(shí),當(dāng)前這個(gè)用戶,對(duì)后臺(tái)已經(jīng)不會(huì)有什么壓力了。
在有損服務(wù)思想的重重保護(hù)下,第一波的搖紅包體驗(yàn)活動(dòng)中,微信紅包幾乎滿分通過考驗(yàn),其中過載保護(hù)的作用相當(dāng)明顯,在客戶端、接入層層減壓、過濾,最終僅把十萬級(jí)壓力傳遞到后臺(tái)。
柔性可用-細(xì)化場(chǎng)景把握核心需求。
柔性可用是在有損服務(wù)價(jià)值觀支持下的方法,重點(diǎn)在于實(shí)際上會(huì)結(jié)合用戶使用場(chǎng)景,根據(jù)資源消耗,調(diào)整產(chǎn)品策略,設(shè)計(jì)幾個(gè)級(jí)別不同的用戶體驗(yàn)場(chǎng)景,保證盡可能成功返回關(guān)鍵數(shù)據(jù),并正常接受請(qǐng)求,絕不輕易倒下。
柔性服務(wù)更具有產(chǎn)品的思維性質(zhì),意義在于深刻理解產(chǎn)品每一個(gè)場(chǎng)景的核心價(jià)值,把握用戶在每一個(gè)場(chǎng)景中的核心需求,設(shè)計(jì)不同層次的滿足核心訴求的辦法,對(duì)柔性服務(wù)在微信紅包中的實(shí)踐,紅包團(tuán)隊(duì)也有相應(yīng)的措施,主要可以分為幾大類。
1、系統(tǒng)容災(zāi):
面對(duì)大規(guī)模的請(qǐng)求量,系統(tǒng)容災(zāi)必不可少,容災(zāi)一般可分為邏輯層容災(zāi)和數(shù)據(jù)層容災(zāi),這次微信后臺(tái)開發(fā)團(tuán)隊(duì)在容災(zāi)布置中采用30%切換的邏輯層方案,即核心服務(wù)都能做到最多1/3服務(wù)器出問題的情況下自動(dòng)容災(zāi)切換以保證服務(wù)質(zhì)量,提高預(yù)警級(jí)別換取系統(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í)盡早拒絕請(qǐng)求,由服務(wù)調(diào)用方換機(jī)重試避免單一服務(wù)器重試過載,快速拒絕和有損服務(wù)中的及早拒絕是一個(gè)概念的方法,從過程的源頭將問題解決,成本越低,影響越小,前端保護(hù)后端的方式來解決問題。
點(diǎn)評(píng):這里面需要指出一點(diǎn)的是,客戶端跟Web 系統(tǒng)不同,做這種操作的前提,是提前預(yù)計(jì)到關(guān)鍵路徑,在客戶端的版本更新中,將相關(guān)的指令和策略埋入,當(dāng)接受數(shù)據(jù)獲取異常時(shí),在客戶端自動(dòng)就降低請(qǐng)求頻率,比如一次請(qǐng)求失敗,用戶肯定想二次再刷,但是可能實(shí)際上沒有向后端請(qǐng)求,而是直接返回,請(qǐng)客戶稍安勿躁,如果不提前埋入,到有問題時(shí)才處理是來不及的。
4、支付分組:
從支付環(huán)節(jié)入手,將所有紅包分為50個(gè)組,放在50個(gè)多帶帶的set上互不影響,單組set出問題最多只影響1/50用戶,保證多數(shù)人服務(wù)不受干擾。分組set化也是柔性可用的一個(gè)重要技術(shù)手段,這一思維非常類似于現(xiàn)實(shí)生活中的集裝箱思維——通過標(biāo)準(zhǔn)化,規(guī)模化的箱體設(shè)計(jì),應(yīng)對(duì)復(fù)雜多樣的貨物,使每個(gè)流通環(huán)節(jié)既獨(dú)立又不失靈活。
5、流量預(yù)加載:
從客戶端入手,將語音圖片等極消耗流量的資源提前讓客戶端自動(dòng)下載預(yù)置好,提前將流量洪峰疏導(dǎo),并在活動(dòng)當(dāng)天CDN將準(zhǔn)備數(shù)百G帶寬應(yīng)對(duì),這塊也與過載保護(hù)中的快慢分離是相通的,將耗流量的服務(wù)提前加載避免高峰期間的沖突。
點(diǎn)評(píng):這是提前準(zhǔn)備,從各個(gè)路徑上,把緩存用到徹底。
**
大系統(tǒng)小做-保證進(jìn)程的功能單一**
大系統(tǒng)小做應(yīng)該來說,是一種意識(shí),他的核心思想是將功能復(fù)雜較大的系統(tǒng),化大為小,減少模塊耦合,降低關(guān)聯(lián)性,用多個(gè)獨(dú)立的模塊來實(shí)現(xiàn)整體系統(tǒng)的功能,大系統(tǒng)小做采用的是化繁為簡,分而治之,便于開發(fā)和迅速實(shí)現(xiàn)。
微信紅包如此龐大的后臺(tái)系統(tǒng),模塊也相當(dāng)之多,而這次的模塊微信開發(fā)后臺(tái)團(tuán)隊(duì)采用了系統(tǒng)高度模塊化的方式,分成一個(gè)個(gè)高度自制的小系統(tǒng),形成高內(nèi)聚低耦合的格局,每個(gè)模塊之間不會(huì)過分依賴對(duì)方,這樣的好處是不會(huì)因?yàn)槿魏我粋€(gè)模塊而影響全部服務(wù),避免牽一發(fā)動(dòng)全身的風(fēng)險(xiǎn),實(shí)現(xiàn)真正的灰度服務(wù)。
點(diǎn)評(píng):降低耦合,增加問題處理時(shí)的難度和平時(shí)的可維護(hù)性。
**
海量服務(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ù)能力將對(duì)其最終成敗有著來越發(fā)深遠(yuǎn)的影響。
**
總結(jié):**
優(yōu)才學(xué)院一直堅(jiān)持一個(gè)觀點(diǎn),盡管是在移動(dòng)互聯(lián)網(wǎng)時(shí)代,但是客戶端應(yīng)用開發(fā)本身,并不是體驗(yàn)的決勝之處,真正對(duì)團(tuán)隊(duì)挑戰(zhàn)的地方,還在于后端,無論是承壓能力,還是安全性等方面,如果這些地方過不了關(guān),整個(gè)應(yīng)用的基礎(chǔ)是不扎實(shí)的,我們也認(rèn)為,技術(shù)能力是應(yīng)用的骨架,如果技術(shù)能力,或者說后端能力不強(qiáng),應(yīng)用在長到一定程度也會(huì)支撐不下去。當(dāng)然可喜的是,現(xiàn)在有了很多云服務(wù),從Iaas 騰訊云、阿里云,到Paas SAE,另外還有專業(yè)的存儲(chǔ)云服務(wù),比如七牛,甚至對(duì)于代碼級(jí)服務(wù)質(zhì)量監(jiān)控 APM 廠商也出現(xiàn)了,國內(nèi)做得最好的是 OneAPM, 這些服務(wù)一定程度上能降低團(tuán)隊(duì)的技術(shù)要求,以及在平時(shí),能發(fā)現(xiàn)自己服務(wù)中所存在的問題。進(jìn)行及早準(zhǔn)備。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78807.html
摘要:微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰訊內(nèi)部一個(gè)叫做海量之道的技術(shù)體系。 showImg(https://segmentfault.com/img/bVtam6); 編者按: 微信這么大的流量,尤其是瞬間的峰值,對(duì)于任何團(tuán)隊(duì)...
摘要:微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰訊內(nèi)部一個(gè)叫做海量之道的技術(shù)體系。 showImg(https://segmentfault.com/img/bVtam6); 編者按: 微信這么大的流量,尤其是瞬間的峰值,對(duì)于任何團(tuán)隊(duì)...
摘要:微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰訊內(nèi)部一個(gè)叫做海量之道的技術(shù)體系。 showImg(https://segmentfault.com/img/bVtam6); 編者按: 微信這么大的流量,尤其是瞬間的峰值,對(duì)于任何團(tuán)隊(duì)...
摘要:微信紅包的核心點(diǎn)是搖,拆,分享紅包,整個(gè)系統(tǒng)設(shè)計(jì)時(shí)必須盡最大可能保證這三個(gè)步驟一氣呵成,任何關(guān)聯(lián)系統(tǒng)出現(xiàn)異常的時(shí)候馬上進(jìn)行系統(tǒng)降級(jí),防止引起系統(tǒng)雪崩。事實(shí)上,真正支撐起微信紅包順暢運(yùn)營的幕后英雄,正是騰訊內(nèi)部一個(gè)叫做海量之道的技術(shù)體系。 showImg(https://segmentfault.com/img/bVtam6); 編者按: 微信這么大的流量,尤其是瞬間的峰值,對(duì)于任何團(tuán)隊(duì)...
摘要:總共邀請(qǐng)全球觀眾參與共同瓜分了億現(xiàn)金紅包大獎(jiǎng)。春晚紅包戰(zhàn)背后暗暗較勁的正是云計(jì)算技術(shù)。此一役后,安全容災(zāi)性能成了每個(gè)春節(jié)紅包團(tuán)隊(duì)需要長期考慮的問題。2007年,國內(nèi)情報(bào)史專家高金虎出版過一本《看不見的第二戰(zhàn)場(chǎng)》,講述無線電情報(bào)與戰(zhàn)爭的關(guān)系。看不見的第二戰(zhàn)場(chǎng),這段話拿來形容BAT春晚紅包戰(zhàn)背后的云計(jì)算技術(shù)戰(zhàn)再合適不過了。每年的春晚紅包戰(zhàn)似乎成了BAT的正面戰(zhàn)場(chǎng),三巨頭呼風(fēng)喚雨,在短時(shí)間內(nèi)把紅包...
閱讀 2128·2021-09-27 14:04
閱讀 1873·2019-08-30 15:55
閱讀 1698·2019-08-30 13:13
閱讀 1065·2019-08-30 13:07
閱讀 2741·2019-08-29 15:20
閱讀 3239·2019-08-29 12:42
閱讀 3323·2019-08-28 17:58
閱讀 3593·2019-08-28 17:56