騰訊云消息隊(duì)列發(fā)布,開放微信紅包收發(fā)關(guān)鍵技術(shù)
8月24日消息,騰訊云消息隊(duì)列(Cloud Message Queue,以下簡(jiǎn)稱CMQ)日前宣布對(duì)外開放,這一技術(shù)最大規(guī)模的應(yīng)用在2016年春晚微信紅包,微信紅包除夕當(dāng)日收發(fā)量達(dá)80.8億個(gè),是羊年除夕的8倍,在最高峰用戶每秒收發(fā)40.9萬個(gè)紅包。騰訊云消息隊(duì)列CMQ可靠性高達(dá)99.999999%,是保證紅包信息高效傳遞的秘密武器之一。
騰訊專家工程師李文征表示,騰訊云CMQ開放了騰訊多年內(nèi)部業(yè)務(wù)沉淀的技術(shù),可以滿足計(jì)算場(chǎng)景中所有異步通信需求,單CMQ實(shí)例每秒處理包量(QPS)高達(dá)10萬,可以高效支持億級(jí)消息收發(fā)推送,并且容量不設(shè)上限。值得關(guān)注的是,CMQ的部署非常簡(jiǎn)單,用戶僅需幾分鐘便可完成接入騰訊云消息隊(duì)列的部署,同時(shí)騰訊云提供極具競(jìng)爭(zhēng)力的價(jià)格,每百萬請(qǐng)求的收費(fèi)2元。
80.8億微信紅包背后:CMQ解決什么問題?
春晚微信紅包活動(dòng)涉及四個(gè)大型系統(tǒng)的聯(lián)動(dòng),包括微信、微信支付、紅包系統(tǒng)和財(cái)付通系統(tǒng)。以下是4個(gè)系統(tǒng)的基本職能:
• 紅包系統(tǒng):個(gè)人紅包的發(fā)、搶、拆和列表查看;
• 財(cái)付通系統(tǒng):包括支付訂單、異步入賬流水的高性能存儲(chǔ),用戶余額和賬單的實(shí)時(shí)展示;
• 微信接入:確保微信用戶公網(wǎng)接入的質(zhì)量;
• 微信支付:在線交易的入口。
2016年春晚微信紅包系統(tǒng)架構(gòu)圖
在這次活動(dòng)中,在微信用戶A給用戶B發(fā)了10元的紅包時(shí),這個(gè)信息在微信后臺(tái)會(huì)依次經(jīng)過以下步驟:
1) 從A帳號(hào)中把余額讀出來;
2) 對(duì)A帳號(hào)做減法操作(減10元);
3) 把結(jié)果寫回A帳號(hào)中(一次確認(rèn));
4) 從B帳號(hào)中把余額讀出來;
5) 拆開A發(fā)送給B的紅包,讀出數(shù)值;
6) 對(duì)B帳號(hào)做加法操作(加10元);
7) 把結(jié)果寫到B帳號(hào)中。
如果沒有使用騰訊云CMQ服務(wù),為了保證數(shù)據(jù)的一致性,上述步驟會(huì)出現(xiàn)兩種結(jié)果:都成功完成或者都不成功執(zhí)行回滾。在這個(gè)操作的過程中,對(duì)A、B帳號(hào)還需引入分布式鎖機(jī)制來避免臟數(shù)據(jù)的問題。在微信紅包這個(gè)龐大的分布式集群內(nèi),事情將變得異常復(fù)雜。李文征指出,“在春節(jié)紅包海量并發(fā)處理的場(chǎng)景下,若使用傳統(tǒng)的事務(wù)處理方式,紅包拆取失敗時(shí)回滾且頻繁輪詢數(shù)據(jù)庫(kù),很容易會(huì)給系統(tǒng)造成并發(fā)壓力甚至系統(tǒng)崩潰”。
在實(shí)際業(yè)務(wù)中,微信紅包系統(tǒng)引入了騰訊云 CMQ 后,一方面避免了分布式事務(wù)增加對(duì)系統(tǒng)的開銷,另一方面也高效解決消息并發(fā)的壓力問題。在A用戶給B用戶發(fā)10元紅包的場(chǎng)景中,引入騰訊云CMQ 后的新策略是這樣的:
• 在上述微信后臺(tái)進(jìn)行到第七步后,B 用戶拆開了紅包,紅包里有 10 塊錢。在做最后的入賬操作時(shí)由于當(dāng)天并發(fā)壓力大,常出現(xiàn)入賬失敗的情況。
• 紅包團(tuán)隊(duì)把入帳失敗的請(qǐng)求,全部轉(zhuǎn)入CMQ。當(dāng)B用戶更新賬戶余額失敗時(shí),手機(jī)客戶端顯示等待狀態(tài)。隨后賬戶系統(tǒng)將不斷從 CMQ 重新拉取重試此更新操作。CMQ 保證了這 10 元的入賬消息永遠(yuǎn)不丟,直至它被取出。
除夕當(dāng)天,用戶紅包的發(fā)、拆、入賬等動(dòng)作,轉(zhuǎn)化為十億級(jí)別的海量請(qǐng)求,騰訊云CMQ保證了海量紅包消息的可靠存儲(chǔ)和傳遞。
CMQ還能做什么?
除了紅包收發(fā)外,在所有需要進(jìn)行異步通信的應(yīng)用情景中,騰訊云CMQ都大有所為,可以應(yīng)用于海量數(shù)據(jù)處理、在線圖片處理、在線游戲?qū)崟r(shí)更新信息等場(chǎng)景。
騰訊云CMQ的推出,解決了開源消息中間件軟件的可靠性、性能、安全等瓶頸問題,開源消息中間件軟件的隊(duì)列數(shù)量和消息堆積數(shù)量有限,每個(gè)IDC機(jī)房必須重新部署購(gòu)買設(shè)備、部署,非常繁瑣;數(shù)據(jù)單機(jī)或簡(jiǎn)單主從結(jié)構(gòu),存在數(shù)據(jù)單點(diǎn)問題,一旦丟失不可回溯,安全防護(hù)功能有限。
而騰訊云CMQ在任何場(chǎng)景中,每條消息在返回給用戶寫成功之時(shí),數(shù)據(jù)已被復(fù)制3份寫到不同物理機(jī)上,并且后臺(tái)數(shù)據(jù)復(fù)制機(jī)制能夠保證任何一臺(tái)物理機(jī)故障時(shí),數(shù)據(jù)能夠快速的做遷移,時(shí)刻保證用戶數(shù)據(jù)3份備份可用,可靠性達(dá)99.999999%。騰訊云同時(shí)提供多緯度的安全防護(hù)和防DDoS攻擊服務(wù),每個(gè)消息服務(wù)提供單獨(dú)命名空間,客戶間數(shù)據(jù)嚴(yán)格隔離,并且支持HTTPS訪問,以及跨地域的安全消息服務(wù)。
目前,滴滴出行、大眾點(diǎn)評(píng)在騰訊云已有深度實(shí)踐。例如:將微信、手機(jī)QQ上用戶的熱門分享的餐館,實(shí)時(shí)反映到大眾點(diǎn)評(píng)App的手機(jī)客戶端上,推薦給消費(fèi)者。同時(shí),騰訊云CMQ已在騰訊內(nèi)部的手機(jī)QQ、QQ彩票等多個(gè)億級(jí)用戶業(yè)務(wù)中得到真實(shí)場(chǎng)景驗(yàn)證。