狂發(fā)紅包 微信為啥沒崩潰?數(shù)據(jù)中心成有力支撐
每年節(jié)假日的時候,大量用戶在同一時間搖紅包,瞬間就會產(chǎn)生每秒千萬級的請求,這個量級的請求如果不加以疏導(dǎo)處理直接到達(dá)后臺,必定導(dǎo)致后端服務(wù)過載甚至崩潰。
騰訊微信團(tuán)隊為了解決搶紅包對后臺系統(tǒng)的高要求,做了多方面的技術(shù)創(chuàng)新和改進(jìn)。本篇文章筆者就跟各位探討下微信紅包的那些事兒。
數(shù)據(jù)中心成為有力支撐
一款互聯(lián)網(wǎng)產(chǎn)品的成功,尤其是像微信紅包這樣成功的產(chǎn)品,離不開IT系統(tǒng)架構(gòu)的支持。數(shù)據(jù)中心的建設(shè)是至關(guān)重要的。從2007年開始,騰訊在全球各地建立了自己的數(shù)據(jù)中心,為的就是更好的支撐自己的業(yè)務(wù)。
而微信紅包能夠穩(wěn)定的運行,與騰訊強(qiáng)大的數(shù)據(jù)中心后方支持有著很大的關(guān)系。
騰訊在2006年前后起步,稱為第一代數(shù)據(jù)中心,采用的是傳統(tǒng)的電信解決方案,數(shù)據(jù)中心PUE(能效比)在1.6左右;第二代數(shù)據(jù)中心則全面轉(zhuǎn)向超大規(guī)模數(shù)據(jù)中心的建設(shè),采用了當(dāng)時國際上最為先進(jìn)的自然冷卻等節(jié)能技術(shù);從2012年開始,騰訊開始自主研發(fā)以“微模塊”為核心技術(shù)的第三代數(shù)據(jù)中心技術(shù)TMDC。
TMDC即騰訊模塊化數(shù)據(jù)中心(Tencent Modular Data Center),是指完全按照模塊化設(shè)計思路搭建的可快速部署的數(shù)據(jù)中心模型,數(shù)據(jù)中心內(nèi)部由多個完全相同的微模塊(Micro Module)組成;微模塊則是以若干機(jī)架為基本單位,包含制冷模塊、供配電模塊及網(wǎng)絡(luò)、布線、監(jiān)控在內(nèi)的獨立的運行單元,全部組件可在工廠預(yù)制,并可靈活拆卸,快速組裝。
騰訊IDC平臺部數(shù)據(jù)中心高級經(jīng)理郁智華在分享日上圍繞海量運營體系、安全應(yīng)急保障體系、運營節(jié)能、成本控制和自動化運營平臺等方面,他將海量運營的關(guān)鍵之道歸納為:做好計劃性運營、做好自動化運營、做好外包管理和人員培養(yǎng)、做好預(yù)防性維護(hù)和應(yīng)急演練、做好精細(xì)化運營。
除了數(shù)據(jù)中心的有力支持,在微信后臺的策略方面,微信開發(fā)團(tuán)隊也根據(jù)應(yīng)用的需求進(jìn)行了應(yīng)對??梢詺w結(jié)為三大點:有損服務(wù),柔性可用,大系統(tǒng)小做。
什么是有損服務(wù)?
微信的應(yīng)用特點是業(yè)務(wù)單一、業(yè)務(wù)規(guī)則簡單、瞬時訪問量漲落巨大、數(shù)據(jù)一致性要求較弱。因此,互聯(lián)網(wǎng)數(shù)據(jù)中心架構(gòu)需要在分布式架構(gòu)基礎(chǔ)上,進(jìn)一步放松了對數(shù)據(jù)一致性和設(shè)備可靠性的要求,追求在極大規(guī)模訪問壓力時的響應(yīng)能力和低成本。
這個就是有損服務(wù),其主要是針對微信紅包的特殊性進(jìn)行的,通過精心拆分產(chǎn)品流程,可以選擇性的犧牲掉一部分?jǐn)?shù)據(jù)的一致性和完整性,從而保證核心應(yīng)用大部分功能的穩(wěn)定運行。
有損服務(wù)是當(dāng)前互聯(lián)網(wǎng)企業(yè)在運營總經(jīng)常會用到的特色運營策略——在資源一定的前提下,互聯(lián)網(wǎng)條件千變?nèi)f化的場景中,量力而為,滿足用戶的核心需求。
微信紅包的核心點在搖,拆,分享紅包,整個系統(tǒng)的設(shè)計需要盡可能的保證一氣呵成。任何一個關(guān)聯(lián)系統(tǒng)出現(xiàn)異常,都可能引起整個系統(tǒng)的雪崩。這就需要在出現(xiàn)異常的情況下進(jìn)行系統(tǒng)降級。
系統(tǒng)降級可以分為兩個方面,一是把核心功能進(jìn)行分拆和簡化,通過輔助輕量化的服務(wù)實現(xiàn),確保最短關(guān)鍵路徑的可行。同時后端采用異步分拆,接收到用戶請求時僅進(jìn)行合法性驗證,驗證完成后直接告知成功,后續(xù)業(yè)務(wù)邏輯進(jìn)入異步隊列進(jìn)行處理,減少了用戶的等待時間,也極大降低了峰值雪崩的概率。微信紅包還有全程壓測流程,對整個業(yè)務(wù)鏈接進(jìn)行自動提前評估,防止過載。
在有損服務(wù)思想的重重保護(hù)下,微信系統(tǒng)能夠在客戶端、接入層層減壓、過濾,最終把壓力進(jìn)一步降低,僅把十萬級壓力傳遞到后臺。
什么是柔性可用?
由于微信應(yīng)用要保證系統(tǒng)的靈活等特性,這就需要柔性可用來放棄一些不重要的信息。在有損服務(wù)價值觀支持下的方法,重點在于實際上會結(jié)合用戶使用場景,根據(jù)資源消耗,調(diào)整產(chǎn)品策略,設(shè)計幾個級別不同的用戶體驗場景,保證盡可能成功返回關(guān)鍵數(shù)據(jù),并正常接受請求,絕不輕易倒下。
柔性服務(wù)更具有產(chǎn)品的思維性質(zhì),意義在于深刻理解產(chǎn)品每一個場景的核心價值,把握用戶在每一個場景中的核心需求,設(shè)計不同層次的滿足核心訴求的辦法,對柔性服務(wù)在微信紅包中的實踐,紅包團(tuán)隊也有相應(yīng)的措施,主要可以分為系統(tǒng)容災(zāi)、資源隔離、快速拒絕、支付分組等幾大類。
什么是大系統(tǒng)小做?
對于微信這樣的大系統(tǒng)來說,還需要一個意識,就是大系統(tǒng)小做應(yīng)該來說。簡單來說就是將功能復(fù)雜較大的系統(tǒng),化大為小,減少模塊耦合,降低關(guān)聯(lián)性,用多個獨立的模塊來實現(xiàn)整體系統(tǒng)的功能,大系統(tǒng)小做采用的是化繁為簡,分而治之,便于開發(fā)和迅速實現(xiàn)。
微信紅包如此龐大的后臺系統(tǒng),模塊也相當(dāng)之多,而這次的模塊微信開發(fā)后臺團(tuán)隊采用了系統(tǒng)高度模塊化的方式,分成一個個高度自制的小系統(tǒng),形成高內(nèi)聚低耦合的格局,每個模塊之間不會過分依賴對方,這樣的好處是不會因為任何一個模塊而影響全部服務(wù),避免牽一發(fā)動全身的風(fēng)險,實現(xiàn)真正的灰度服務(wù)。
這樣做的好處就是能夠靈活的進(jìn)行各種服務(wù),同時還能夠保證業(yè)務(wù)的快速上線,不影響整體的業(yè)務(wù)運行。
怎樣做一個好的系統(tǒng)?
說道最后,問題來說,那么如何做一個好的IT系統(tǒng)呢?
a、首先,維護(hù)人員要預(yù)估架構(gòu)可控性。
簡單來說就是對IT架構(gòu)是否可控進(jìn)行評估,如果IT系統(tǒng)的承載能力已經(jīng)達(dá)到極限,再添加新的應(yīng)用程序很可能造成數(shù)據(jù)中心的癱瘓,從而影響所有的業(yè)務(wù)正常運存。
b、IT系統(tǒng)是否能夠支持高峰穩(wěn)定運行。
不同的業(yè)務(wù)類型的訪問的高峰時間會有不同,尤其是在如今的互聯(lián)網(wǎng)時代,很多企業(yè)業(yè)務(wù)往往面臨突發(fā)的高峰訪問。如,12306網(wǎng)站的癱瘓就是因為其在人們春節(jié)回家高峰時段的高頻繁訪問造成的IT業(yè)務(wù)系統(tǒng)崩潰。
c、能夠快速的解決問題。
在軟件定義時代,需要借助管理軟件及時發(fā)現(xiàn)問題、解決問題。例如,微信出現(xiàn)問題到解決問題,歷時半天多的時間,雖然看起來時間并不很長,但是從發(fā)現(xiàn)問題到解決問題,整個解決過程拖沓,并不讓網(wǎng)友滿意。
d、確保業(yè)務(wù)可用的情況下,保證系統(tǒng)的靈活性。
隨著web 2.0時代的來臨,人們對數(shù)據(jù)中心的衡量標(biāo)準(zhǔn)也開始改變,由原來的注重穩(wěn)定性,開始向持續(xù)性、靈活性等方面轉(zhuǎn)移。
文章總結(jié):IT系統(tǒng)的管理隨著互聯(lián)網(wǎng)時代的來臨越來越重要,如今的很多功能都需要由數(shù)據(jù)中心來提供支持,而IT系統(tǒng)的運行情況直接影響到人們的應(yīng)用感受。例如,如果微信頻繁出現(xiàn)宕機(jī)或者網(wǎng)絡(luò)斷網(wǎng)的情況,那么可能會減少很多的用戶。
IT系統(tǒng)的成功與否與多方面有關(guān),性能、靈活性、穩(wěn)定性等如今都加入了對系統(tǒng)的審核。在互聯(lián)網(wǎng)時代,需要互聯(lián)網(wǎng)客戶緊跟需求,對IT系統(tǒng)進(jìn)行更多的技術(shù)創(chuàng)新,才能保證新業(yè)務(wù)的穩(wěn)定運行。