微信紅包【技術(shù)篇】——如何為紅包提供穩(wěn)定支付體驗(yàn)【轉(zhuǎn)載】

assayer??發(fā)表于 2015.3.31454瀏覽0討論

騰訊大講堂隆重推出【100億次的挑戰(zhàn)】系列海量服務(wù)之道2.0講座译荞,覆蓋技術(shù)、產(chǎn)品休弃、項(xiàng)目管理吞歼、支撐、支付5個(gè)維度塔猾。第一場(chǎng)【技術(shù)篇】3000名鵝廠(chǎng)員工參與篙骡,場(chǎng)面火爆!從今天起丈甸,大講堂將陸續(xù)推出回顧文章糯俗,回饋廣大用戶(hù)。

支付是個(gè)人發(fā)紅包的必經(jīng)環(huán)節(jié)睦擂,在除夕這個(gè)全國(guó)人民最熱鬧的一個(gè)節(jié)日里得湘,讓大家能順利把錢(qián)花出去,變成紅包到達(dá)親朋好友的手中顿仇,甚至于在錢(qián)包中看自己收到了多少錢(qián)淘正,順便到處點(diǎn)點(diǎn)體驗(yàn)一下微信支付這個(gè)產(chǎn)品,在這個(gè)過(guò)程中臼闻,作為后端服務(wù)块茁,如何讓各項(xiàng)體驗(yàn)可以穩(wěn)定可靠所宰,成了我們重要的一個(gè)課題慧起。

大家都知道疹吃,在除夕發(fā)紅包的這個(gè)當(dāng)口,會(huì)面臨兩個(gè)極端情況:一個(gè)是請(qǐng)求量大乓搬,一個(gè)是用戶(hù)容忍度低思犁。我們通過(guò)做到可控、柔性缤谎、應(yīng)變?nèi)齻€(gè)方面抒倚,來(lái)平穩(wěn)度過(guò)除夕這個(gè)紅峰:

一、如何做到可控坷澡?

系統(tǒng)在隨著業(yè)務(wù)需求的快速迭代上線(xiàn)過(guò)程中托呕,會(huì)漸漸變得荊棘密布,而且這些也許都發(fā)生在不經(jīng)意間频敛,當(dāng)你回頭去仔細(xì)再看的時(shí)候项郊,會(huì)大大出乎自己的意料。其中大量的非核心調(diào)用斟赚、基礎(chǔ)模塊的重復(fù)調(diào)用着降、隨意的跨城調(diào)用,淹沒(méi)了核心的關(guān)鍵路徑拗军,加重了路徑的重度和長(zhǎng)度任洞。當(dāng)巨大的流量通過(guò)這條路徑的時(shí)候蓄喇,會(huì)壓垮那些準(zhǔn)備不足的分支岔路。我們從最樸素的想法出發(fā)交掏,為了解決這個(gè)問(wèn)題妆偏,那只有讓到達(dá)目標(biāo)的路徑盡量短(核心路徑),盡量寬(容量評(píng)估)盅弛,盡量穩(wěn)(冗余多活)钱骂。

1.核心路徑

我們通過(guò)在服務(wù)框架層增加染色信息,并層層進(jìn)行上報(bào)收集挪鹏,生成出完整的調(diào)用關(guān)系圖见秽。對(duì)著調(diào)用關(guān)系圖,通過(guò)盡量做減法讨盒,將其中最核心的路徑進(jìn)行標(biāo)記出來(lái)解取。怎么做減法?我們有以下幾招:

異步非核心調(diào)用催植;

消滅重復(fù)調(diào)用肮蛹;

合并相關(guān)調(diào)用勺择;

減少跨城調(diào)用创南;

裁剪靜態(tài)信息調(diào)用(針對(duì)紅包特殊處理);

通過(guò)做減法省核,我們優(yōu)化了核心路徑稿辙,為下一步的容量評(píng)估做了基礎(chǔ)準(zhǔn)備工作。

2.容量評(píng)估

通過(guò)路徑染色气忠,在確定核心路徑(資源)后邻储,我們按照業(yè)務(wù)預(yù)期,從用戶(hù)進(jìn)入每個(gè)業(yè)務(wù)場(chǎng)景的每秒觸發(fā)次數(shù)作為源頭旧噪,分解到各場(chǎng)景內(nèi)操作的核心路徑吨娜,制定了容量核算表,從而評(píng)估出為了滿(mǎn)足業(yè)務(wù)預(yù)期所需要的容量:

單接口QPS淘钟;

模塊整體QPS宦赠;

模塊帶寬流量;

跨城穿越帶寬流量米母;

基于這個(gè)容量評(píng)估勾扭,以及一些壓測(cè)數(shù)據(jù),我們可以給出運(yùn)維上需要提供的各模塊機(jī)器數(shù)铁瞒,同城帶寬和跨城帶寬的需求妙色。這樣可以明明白白指導(dǎo)各項(xiàng)擴(kuò)容工作開(kāi)展,既避免了盲目拍腦袋定擴(kuò)容機(jī)器數(shù)慧耍,也避免了評(píng)估不充分而邊壓測(cè)邊擴(kuò)容帶來(lái)的效率低下身辨。

3.冗余多活

做完了核心路徑和容量評(píng)估丐谋,是不是就做到了可控呢?答案是否的煌珊。大家都知道墨菲定律:只要有可能的事情就一定會(huì)發(fā)生笋鄙,而且歷史也無(wú)數(shù)次警告了我們這一點(diǎn)。我們當(dāng)然不希望在除夕敗給墨菲定律怪瓶,所以我們還需要針對(duì)每個(gè)核心資源萧落,盡可能來(lái)做到消除單點(diǎn)和單策略,以降低壞事情發(fā)生的可能洗贰。除了大家都很熟悉的多點(diǎn)冗余部署的無(wú)狀態(tài)邏輯層找岖,一方面負(fù)載均衡,一方面消除單點(diǎn)以外敛滋,我們還有如下一些策略:

多套調(diào)用方式(按客戶(hù)端用戶(hù)觸發(fā)順序調(diào)用许布、前序接口預(yù)加載調(diào)用);

多套數(shù)據(jù)獲纫锘巍(直接接口獲取蜜唾、進(jìn)程內(nèi)cache、集中化cache庶艾、準(zhǔn)靜態(tài)配置)袁余;

多套訪(fǎng)問(wèn)鏈路(內(nèi)網(wǎng)直接訪(fǎng)問(wèn)、跨城加速咱揍、通過(guò)內(nèi)網(wǎng)接力點(diǎn)繞過(guò)故障鏈路颖榜、通過(guò)外網(wǎng)繞過(guò)故障鏈路);

通過(guò)對(duì)核心資源做到冗余多活煤裙,系統(tǒng)模塊之間的層層保護(hù)掩完,使得在系統(tǒng)層面基于并非完全可靠的各個(gè)模塊實(shí)現(xiàn)了整體上可靠的系統(tǒng)。

二硼砰、如何做到柔性且蓬?

雖然我們做到了對(duì)系統(tǒng)的把控,但是由于一些原因题翰,比如除夕晚上大家的熱情超出了預(yù)期恶阴,再比如擴(kuò)容的某個(gè)資源由于和別的業(yè)務(wù)混用而無(wú)法提供評(píng)估預(yù)期的支撐,從而導(dǎo)致最終超出了我們前期準(zhǔn)備的核心路徑的資源遍愿。在這種情況下存淫,我們的應(yīng)對(duì)策略是:盡量保最核心的功能(體驗(yàn)降級(jí))和一定不能“死”(過(guò)載保護(hù))。

1.體驗(yàn)降級(jí)

這個(gè)策略隨著海量課程的普及沼填,已經(jīng)深入人心:在無(wú)法提供最好的服務(wù)的時(shí)候桅咆,先解決用戶(hù)最最核心的需求。在核心路徑中坞笙,我們繼續(xù)分解出一些非核心的特性岩饼,對(duì)于這些特性所依賴(lài)的系統(tǒng)調(diào)用荚虚,分兩個(gè)級(jí)別來(lái)做應(yīng)對(duì)策略:

旁路(異常容忍):通過(guò)設(shè)置較小超時(shí)值,當(dāng)發(fā)現(xiàn)出現(xiàn)少量毛刺籍茧,資源受限無(wú)法在預(yù)期時(shí)間內(nèi)完成調(diào)用返回時(shí)版述,將其結(jié)果忽略,而不影響最核心的功能寞冯;

降級(jí)(徹底關(guān)閉):通過(guò)設(shè)置毛刺閾值渴析,當(dāng)出現(xiàn)大量超時(shí),對(duì)整體系統(tǒng)的吞吐和并發(fā)能力產(chǎn)生影響時(shí)吮龄,直接將特性關(guān)閉俭茧,不再進(jìn)行調(diào)用;

2.過(guò)載保護(hù)

和體驗(yàn)降級(jí)一樣漓帚,這個(gè)也是大家所熟知的面對(duì)海量請(qǐng)求下的對(duì)系統(tǒng)的保護(hù)策略:系統(tǒng)盡可能提供自己所能的服務(wù)母债,當(dāng)壓力過(guò)大時(shí),丟棄無(wú)法處理的請(qǐng)求(做好前端的友好提示)而使得系統(tǒng)活下來(lái)尝抖,避免出現(xiàn)雪崩:

接口限頻(事前保護(hù)):提前按準(zhǔn)備好的處理能力毡们,設(shè)置服務(wù)可達(dá)到的QPS,超過(guò)則直接拒絕昧辽;

快速拒絕(事中保護(hù)):通過(guò)對(duì)服務(wù)質(zhì)量的監(jiān)控(機(jī)器負(fù)載衙熔、隊(duì)列等待長(zhǎng)度,接口耗時(shí)等)奴迅,當(dāng)發(fā)現(xiàn)監(jiān)控指標(biāo)超過(guò)閾值時(shí)青责,則觸發(fā)對(duì)待處理請(qǐng)求的快速拒絕;

三取具、如何做到應(yīng)變?

天有不測(cè)風(fēng)云扁耐,即使做了萬(wàn)全的打算和準(zhǔn)備暇检,還是會(huì)發(fā)生預(yù)料中或者預(yù)料外的情況。我們對(duì)除夕當(dāng)晚的預(yù)期是悲觀(guān)的婉称,大家常說(shuō)的一句話(huà)就是:“肯定哪里會(huì)出問(wèn)題块仆,就看能救多快”。而對(duì)各種可能發(fā)生的應(yīng)變上王暗,我們是充分準(zhǔn)備的悔据,展現(xiàn)出各種“奇淫巧計(jì)”,并且我們最終證明了:成功是留給有準(zhǔn)備的人的俗壹。

1.應(yīng)急預(yù)案

針對(duì)前文說(shuō)到的冗余多活和柔性策略的切換科汗,有兩種實(shí)施策略,一種是系統(tǒng)自動(dòng)觸發(fā)绷雏,一種是人工干預(yù)头滔。由于實(shí)際情況可能決策比較復(fù)雜怖亭,自動(dòng)觸發(fā)的驗(yàn)證很難覆蓋全,而除夕又容不得任何出錯(cuò)坤检,因此我們最終決策還是基于充分的監(jiān)控兴猩,在除夕當(dāng)晚通過(guò)人工進(jìn)行干預(yù)。為了避免人工干預(yù)時(shí)的手忙腳亂早歇,忙中出錯(cuò)倾芝,我們做了如下兩個(gè)事情:

應(yīng)急預(yù)案:針對(duì)各種異常下的操作控制,進(jìn)行了梳理箭跳,并形成《應(yīng)急預(yù)案手冊(cè)》蛀醉,便于做出快速?zèng)Q策;

按策略快速生效:針對(duì)上述應(yīng)急預(yù)案策略的人工干預(yù)操作衅码,我們做了一套快速下發(fā)系統(tǒng)拯刁,并提前設(shè)計(jì)好變更策略,屆時(shí)直接按策略推送逝段。避免了臨時(shí)進(jìn)行多個(gè)配置項(xiàng)的變更和上線(xiàn)流程垛玻,節(jié)約了處置時(shí)間并且使得操作不易出錯(cuò);

在除夕當(dāng)晚奶躯,其中一個(gè)策略得到了顯著效果帚桩,這個(gè)策略是冗余多活中說(shuō)到的多套訪(fǎng)問(wèn)鏈路。除夕當(dāng)晚嘹黔,上海訪(fǎng)問(wèn)深圳的底層鏈路服務(wù)出現(xiàn)抖動(dòng)账嚎,我們?cè)诙ㄎ粏?wèn)題后,將鏈路切換到其他冗余方式上儡蔓,恢復(fù)了業(yè)務(wù):

2.巧妙卸力

在系統(tǒng)中郭蕉,有一些特定性能短板的場(chǎng)景,在這些特定場(chǎng)景下喂江,通過(guò)分析制定適用的巧妙策略召锈,有的時(shí)候是非常有效的,需要一定的業(yè)務(wù)敏感性获询,有的時(shí)候也是靈光一現(xiàn)涨岁,這里分享紅包支付中的一個(gè)巧妙的乾坤大挪移。大家都知道吉嚣,在支付中如果使用零錢(qián)梢薪,那么請(qǐng)求是在內(nèi)部系統(tǒng)就可以完成。如果是使用銀行卡尝哆,那么支付請(qǐng)求必須發(fā)送到銀行進(jìn)行扣款秉撇。很顯然,銀行接口的性能對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō)是一個(gè)局部短板。在跨年支付紅峰沖擊最大的時(shí)候畜疾,其實(shí)很多人通過(guò)前幾天的紅包游戲赴邻,已經(jīng)積累了不少的零錢(qián)。而業(yè)務(wù)上正好有默認(rèn)支付方式的特性啡捶,所以通過(guò)合理引導(dǎo)壓力姥敛,在跨年時(shí)刻到來(lái)前,只要用戶(hù)零錢(qián)足夠瞎暑,我們就優(yōu)先引導(dǎo)用戶(hù)使用零錢(qián):

從曲線(xiàn)看出彤敛,在策略生效后,銀行卡支付請(qǐng)求量幾乎下降了50%了赌,并且在跨年到來(lái)時(shí)墨榄,疊加上請(qǐng)求量的上漲30%,系統(tǒng)能力也可以cover住勿她,這樣就巧妙地保護(hù)了銀行接口的短板袄秩,也同時(shí)保護(hù)了用戶(hù)體驗(yàn)的流暢。

四逢并、小結(jié)

面對(duì)不容出錯(cuò)的海量應(yīng)用項(xiàng)目之剧,怎樣在后臺(tái)側(cè)可以?xún)?yōu)雅地做到穩(wěn)定的用戶(hù)體驗(yàn),我們根據(jù)自己的工作砍聊,得出來(lái)如下的總結(jié)背稼,也希望給大家以后在處理類(lèi)似問(wèn)題時(shí)有一點(diǎn)幫助:

可控:對(duì)核心支撐的評(píng)估梳理 – 一切盡在掌握

柔性:對(duì)系統(tǒng)可靠的質(zhì)疑態(tài)度 – 保護(hù)無(wú)處不在

應(yīng)變:對(duì)極端情況的充分準(zhǔn)備 – 氣定神閑鎮(zhèn)場(chǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市玻蝌,隨后出現(xiàn)的幾起案子蟹肘,更是在濱河造成了極大的恐慌,老刑警劉巖俯树,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帘腹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡聘萨,警方通過(guò)查閱死者的電腦和手機(jī)竹椒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)米辐,“玉大人,你說(shuō)我怎么就攤上這事书释∏讨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵爆惧,是天一觀(guān)的道長(zhǎng)狸页。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么芍耘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任址遇,我火速辦了婚禮,結(jié)果婚禮上斋竞,老公的妹妹穿的比我還像新娘倔约。我一直安慰自己,他們只是感情好坝初,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布浸剩。 她就那樣靜靜地躺著,像睡著了一般鳄袍。 火紅的嫁衣襯著肌膚如雪绢要。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天拗小,我揣著相機(jī)與錄音重罪,去河邊找鬼。 笑死哀九,一個(gè)胖子當(dāng)著我的面吹牛剿配,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播勾栗,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惨篱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了围俘?” 一聲冷哼從身側(cè)響起砸讳,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎界牡,沒(méi)想到半個(gè)月后簿寂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宿亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年常遂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挽荠。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡克胳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圈匆,到底是詐尸還是另有隱情漠另,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布跃赚,位于F島的核電站笆搓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜满败,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一肤频、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧算墨,春花似錦宵荒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至面粮,卻和暖如春少孝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背熬苍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工稍走, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柴底。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓婿脸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親柄驻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狐树,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容