腾讯计费:亿万级大促活动自动化保障体系
9月14-15日,GOPS全球運維大會上海站圓滿舉行,為期兩天的運維盛宴,為各位運維人帶來了相互交流和學(xué)習(xí)的絕佳平臺,來自騰訊技術(shù)工程事業(yè)群(TEG)計費平臺部的黃宇給大家?guī)砹恕?strong>億萬級大促活動自動化保障體系」的主題分享。
我們同步了嘉賓現(xiàn)場沙龍分享視頻(內(nèi)含高清PPT),請點擊下方「騰訊技術(shù)課小程序」卡片即可查看:
同時附上整理好的演講稿:
黃宇,來自騰訊技術(shù)事業(yè)群的計費平臺部,在鵝廠長期從事虛擬支付、多終端支付、賬戶存儲、風(fēng)控、結(jié)算等領(lǐng)域的工作,帶領(lǐng)團隊負(fù)責(zé)騰訊千億級計費大盤的整體運營和質(zhì)量,目前主要專注于運營自動化、私有云運維、智能監(jiān)控等相關(guān)建設(shè)。
騰訊計費是做什么的
騰訊計費平臺是產(chǎn)品端到端在線交易平臺,其核心是幫助用戶與產(chǎn)品安全、便捷的完成支付和收款,在交易過程中幫助產(chǎn)品盈收最大化。平臺承載了公司每天數(shù)億收入大盤,為180+個國家(地區(qū))、萬級業(yè)務(wù)代碼、100+W結(jié)算商戶提供支付渠道、營銷、賬戶托管、風(fēng)控、結(jié)算以及推薦等服務(wù)。
如果把騰訊比喻為一個飯店,騰訊計費就相當(dāng)于門口柜臺的收費平臺,您可以用微信支付、銀行卡、蘋果支付、QQ錢包、充值卡抵扣券或其他方式支付你在飯店的消費;這里包括了ToC場景,比如用戶往自己的QB賬戶充值,或者在游戲終端購買道具、游戲幣;也包括ToB場景,比如廣告主、網(wǎng)紅主播、騰訊云客戶的扣款收費,都是通過騰訊計費這套平臺提供服務(wù)。
從收入統(tǒng)計來看,目前在賬戶托管方面,覆蓋了絕大部分ToC ToB業(yè)務(wù)的有價賬戶的托管,有價賬戶的規(guī)模現(xiàn)在是360+億的賬戶體量;實時交易方面,覆蓋了90%以上的內(nèi)部實時交易;結(jié)算出賬是全覆蓋。
大促營銷活動?
大促營銷活動是騰訊計費對內(nèi)提供的一個核心服務(wù),公司業(yè)務(wù)可以在計費平臺上設(shè)置各種各樣的營銷活動,比如首次充值贈送、購買滿贈、累計贈送、打折、抽獎、團購、砍價等等,支持的營銷活動量級每年有幾萬個(2018年支持活動4.2W個)。
大家可以看到,像王者榮耀、CF、飛車這些頭部游戲,或者騰訊視頻、QQ會員這些包月VIP等產(chǎn)品都有幾千萬甚至上億的活躍用戶量級;如果通過活動進行推廣宣傳,全量用戶的觸達后,活動收入會呈現(xiàn)爆發(fā)式增長。
營銷活動很多彩,然而現(xiàn)實很殘酷,活動也有出故障的時候。作為負(fù)責(zé)公司收入大盤的計費平臺,在支持業(yè)務(wù)營銷活動中的風(fēng)險和壓力都是非常大的。尤其是在營銷活動保障體系構(gòu)建完善之前,時常會出現(xiàn)服務(wù)容量過載、平臺擴容效率低、變更影響等平臺問題。
那么為什么會出現(xiàn)各種類型的問題,這里分析總結(jié)了騰訊計費大促營銷活動的幾個特點:
1.活動鏈路很長,比如一個游戲中QB首充值贈送組合禮包的活動,用戶一進來,要進行登錄校驗、大區(qū)查詢、角色查詢、風(fēng)控檢查、活動信息拉取、下單、支付、組合禮包中物品發(fā)貨等一連串的調(diào)用;由于我們是公司支撐型平臺,需要對接那么多業(yè)務(wù)和平臺,單是外部接口就是280+個,所以一個不起眼的環(huán)節(jié)都可能成為大盤容量瓶頸。
2.業(yè)務(wù)大促活動峰值與平時流量都是幾十倍的差異,而且業(yè)務(wù)間的流量此起彼伏。公共平臺的資源是有限的,不可能對不同業(yè)務(wù)每種活動類型不計成本的堆積設(shè)備資源。
3.現(xiàn)網(wǎng)變更頻繁,前端版本、后端版本發(fā)布,系統(tǒng)配置調(diào)整、營銷活動規(guī)則調(diào)整等各種變更每天加起來平均350+次,大家都知道,變更帶來的故障通常占到了現(xiàn)網(wǎng)故障的75%以上,所以在這么變更頻發(fā)的平臺上進行營銷活動資源擴縮容,高一致的精準(zhǔn)度是很難保證的。
4.業(yè)務(wù)不能徹底隔離:計費平臺支持了成千上萬個業(yè)務(wù),不可能為每個業(yè)務(wù)做一套隔離的環(huán)境。業(yè)務(wù)大促活動期間,是存在相互干擾的,如果控制不當(dāng),單個業(yè)務(wù)的爆發(fā)式流量甚至?xí)碚麄€大盤的雪崩效應(yīng),這又該如何防范。
如何評估大盤的容量瓶頸
說到大盤容量,大家都會想到春節(jié)紅包或者雙十一大促這樣的大流量場景,都需要提前壓測的方式來評估容量的瓶頸。
壓測的方式一般有幾種,一種是把服務(wù)組合為一個個SET,或者叫一個個桶,就跟生產(chǎn)車間一樣,對每個set提前壓測好性能,等需要的時候再按set一個個添加到集群中,這種方式適合于比較標(biāo)準(zhǔn)化、模塊關(guān)系不復(fù)雜,大批量的可擴展場景;
第二種方式是根據(jù)現(xiàn)網(wǎng)既有規(guī)模,按比例縮小規(guī)模進行壓測,從而估算現(xiàn)網(wǎng)環(huán)境的容量,一般測試或者預(yù)發(fā)布環(huán)境就是這么干的。
第三種方式就是模擬用戶構(gòu)造仿真數(shù)據(jù),直接對現(xiàn)網(wǎng)大盤進行壓測。前面也介紹了,騰訊計費的場景存在鏈路長、對接廣等復(fù)雜性,所以采用第三種壓測方式。
為了達到盡量仿真的壓測效果,不能針對活動入口進行簡單的并發(fā)重復(fù)執(zhí)行相同用例,這樣無法實現(xiàn)接近現(xiàn)網(wǎng)的仿真效果。前面也提到,不同的渠道、不同的業(yè)務(wù)或者活動模式,交易經(jīng)過的內(nèi)外部鏈路都不同,所以這里很重要的一點就是構(gòu)建盡量逼真的壓測場景。
根據(jù)現(xiàn)網(wǎng)平臺入庫到TDW的歷史流水?dāng)?shù)據(jù),按活動入口、登陸態(tài)、業(yè)務(wù)代碼、支付渠道、版本號等信息,構(gòu)建出百萬級的用例組合。
TDW: Tencent? distributed data warehouse?騰訊分布式數(shù)據(jù)倉庫
Cmdb:config manage database 系統(tǒng)及業(yè)務(wù)配置管理系統(tǒng)
FlowSvr:流量管理系統(tǒng)
深度仿真壓測還要模擬用戶端從不同區(qū)域和網(wǎng)絡(luò)進行測試,所以在深圳、上海、天津、成都等不同城市的多個機房各地部署了用例分發(fā)SVR和agent,將一個大的壓測任務(wù)分解到不同機房并行發(fā)起執(zhí)行。
如果用少量的號碼壓測,很容易命中現(xiàn)網(wǎng)的限頻攔截或風(fēng)控策略,而且有些業(yè)務(wù)場景測試需要提供號碼真實的游戲大區(qū)、綁定或者好友關(guān)系等信息,所以平臺構(gòu)建了十萬級的號碼資源庫,不同測試號碼滿足不同的場景條件,用于壓測過程輪詢使用。?
那么壓測用例在執(zhí)行的時候,就會根據(jù)測試場景,自動匹配不同的業(yè)務(wù)資源和號碼資源,替換執(zhí)行。
關(guān)于現(xiàn)網(wǎng)壓測還有一點值得注意,因為在直接對現(xiàn)網(wǎng)進行全流程壓測,所以一定一定是不能壓出問題的,一旦壓上去的量級過大肯定會造成現(xiàn)網(wǎng)損失,所以壓測速率從0提升到指定速率,建議采用勻速爬坡式提升,過程中一旦發(fā)現(xiàn)報錯、超時可以立即停止壓測。
按需動態(tài)分配營銷活動資源
通過壓測知道了大盤的容量,那么為了安全起見,是不是按最大最全的體量囤積資源就好了?
肯定不能這樣,如果您是老板的話,也不會同意這樣干是吧。大盤中不同業(yè)務(wù)場景在不同環(huán)節(jié)和時段的資源消耗是有差異的,在錯峰情況下如何最大限度復(fù)用資源非常重要。
在這里的自動化擴縮容設(shè)計里,現(xiàn)網(wǎng)大盤由服務(wù)組成,服務(wù)由系統(tǒng)實例組成,而實例承載的基礎(chǔ)是騰訊計費自研的TDF程序框架;擴縮容的核心大腦就是TSM自動化管理平臺,壓測平臺周期性壓測現(xiàn)網(wǎng)容量,現(xiàn)網(wǎng)內(nèi)存、負(fù)載、時耗、流量等指標(biāo)也會分鐘級采集匯總,這些數(shù)據(jù)都會匯總到TSM管理平臺,這個大腦再根據(jù)策略下達擴容、或者縮容的指令。
這里采用KVM虛擬機構(gòu)建用于自動擴縮容的資源池,共享資源池會在日常擴容中出庫消耗,在縮容中退庫,這樣持續(xù)的循環(huán)。資源池分成共享資源池和緊急資源池兩個部分,緊急資源池一般是不動用的,就像一個國家的戰(zhàn)略物質(zhì)儲備一樣,只有在共享資源池出現(xiàn)補給不上的緊急情況才使用。
那么具體什么時候啟動自動擴容呢,這里主要采用了多級閥值和趨勢預(yù)判兩種策略,所謂分級閥值就是當(dāng)服務(wù)負(fù)載突發(fā)突破不同檔位時,平臺設(shè)置了不同的擴容比例和力度。趨勢預(yù)判策略是根據(jù)逐步上升的容量指標(biāo),對下一時段的容量水平進行提前趨勢斜率分析,并預(yù)判提前擴容。
具體的快速擴容操作,像TDF框架和相關(guān)基礎(chǔ)庫文件包,在資源標(biāo)準(zhǔn)化的時候就進行預(yù)安裝,所以這個環(huán)節(jié)是不算耗時的;APP程序包按服務(wù)中的參照子節(jié)點進行發(fā)布,特別是權(quán)限方面,由于涉及的內(nèi)外部權(quán)限非常多,所以也要參照原節(jié)點進行克隆。這個執(zhí)行過程可以做到分鐘級控制。
這里的擴容發(fā)布依賴的基礎(chǔ)是一個全球發(fā)布平臺,它通過公司級TSC操控通道向國內(nèi)和海外,包含自建機房和AWS上的資源進行控制,它支持串行、并行不同的發(fā)布模式;具有適配廣,高可用和可擴展的特點。
如何確保擴縮容變更精準(zhǔn)無誤
一開始有提到,在日常頻繁變更的現(xiàn)網(wǎng)大盤上進行擴縮容操作,故障風(fēng)險是非常高的,那么怎么確保這里的變更準(zhǔn)確性呢?也就是怎么確保擴容上去的資源服務(wù)沒有問題。
針對這個問題,這里采用了三種檢測機制,一是對新節(jié)點通過工具demo進行功能探測,第二是將新擴容節(jié)點相對于服務(wù)原有節(jié)點進行橫比掃描分析,第三是對實時監(jiān)控告警信息的自動化關(guān)聯(lián)。
這里要重點說下掃描檢查機制,將擴縮容變更和版本變更等等都收攏到一個變更管控平臺,這個平臺再針對不同的變更場景發(fā)起掃描檢查和播測驗證;掃描檢查是基于監(jiān)控采集的海量數(shù)據(jù),進行細(xì)粒度同比以及節(jié)點間橫比,包括成功率、時耗、錯誤碼等對比分析;撥測驗證也就是之前有講到的業(yè)務(wù)場景撥測;那么管控平臺就是將掃描和撥測兩方面的結(jié)論綜合起來,判斷這次擴容變更是否準(zhǔn)確,并提交給TSM大腦進行決策。
如何防止大盤雪崩風(fēng)險
以上介紹了自動化決策和自動化擴縮容的機制,那么是不是有了這些自動化機制就萬無一失了呢?
自動化也不能100%的信任,如果極端情況,自動化擴容不能有效工作,我們的現(xiàn)網(wǎng)大盤會不會有被大促營銷活動沖垮,進而導(dǎo)致雪崩的風(fēng)險,這種情況一定不允許發(fā)生。
所以平臺必須要有一個防止業(yè)務(wù)間相互沖擊、避免大盤雪崩的應(yīng)對措施;計費平臺在入口層增加了按渠道、按業(yè)務(wù)進行并發(fā)限頻的策略,當(dāng)容量擴大或者縮小的時候,這個限頻策略會相應(yīng)的動態(tài)調(diào)整,服務(wù)SET間的流量也可以通過TSM大腦進行靈活的分流調(diào)度。通過這樣的方式來確保大促活動期間大盤不出現(xiàn)雪崩的風(fēng)險。
小結(jié)
騰訊計費大促活動自動化保障體系,也就是按五個思路來構(gòu)建。
一是大盤容量的壓測機制。
二是快速擴縮容機制,以及資源共享管理、變更掃描,和限頻保護措施。
?構(gòu)建之后,自動化保障體系可以濃縮為如下示意圖。
壓測平臺通過周期性壓測及時評估大盤容量瓶頸,監(jiān)控平臺也會實時采集相關(guān)容量指標(biāo);這些信息匯總之后做成一個實時的大屏,就把它放在公司的辦公區(qū)域,同事都能看到;那么一旦容量指標(biāo)突變觸發(fā)了策略,TSM大腦會及時感知,并下發(fā)現(xiàn)網(wǎng)擴縮容的控制指令。這就是大致的調(diào)度過程。
這套保障體系建成之后,這兩年遇到五一、國慶、除夕這樣的重大節(jié)假日,或者頭部業(yè)務(wù)周年慶之類的大促活動,都能夠順利支持,所以整個平臺保持一個比較高的運營可用度。
早幾年除夕的時候,為了應(yīng)對集中爆發(fā)的大促活動,我們得安排一二十個人留守,而且有時得現(xiàn)場臨時討論應(yīng)急方案;現(xiàn)在呢,每到除夕,只需安排兩三個同事留守,看看大盤,做做監(jiān)控,讓大盤自動運行,效果還是非常明顯的。
當(dāng)然,我們這套保障體系目前還做到不夠完備,尤其是針對海外支付的,或者采用亞馬遜AWS之類的非自建機房場景,在自動化方面還需要持續(xù)的建設(shè)和提升。這是我們下一步繼續(xù)努力的方向。
希望騰訊計費大促活動場景的自動化解決方案對您的場景有所參考,謝謝大家!
總結(jié)
以上是生活随笔為你收集整理的腾讯计费:亿万级大促活动自动化保障体系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 世界人工智能大会 | 腾讯攻坚AGI,与
- 下一篇: 腾讯海量存储与CDN的自动化运维