高峰之巔:騰訊的“春節”保衛戰
2021年03月04日20:12

原標題:高峰之巔:騰訊的“春節”保衛戰

2021年春節,在全國上下“就地過年”的號召下,很多人第一次經曆了除夕夜沒有與家人團聚。而對鄒方明來說,除夕夜在公司加班早已是家常便飯,過去九年,他的年夜飯時間都是與同事們一起度過。

以往,鄒方明和同事們習慣叫海底撈的外賣到公司,大家以一頓火鍋來為過去的一年收尾,但今年,因為搬到新的大廈,不能開火,所以大家只能跑到公司對面的一個餐廳去吃飯。

所謂的年夜飯,整個過程也十分平淡,沒有人喝酒,吃飯時間也只有5點半到6點半約一個小時,用餐完畢,大家都快速回到了工作崗位上。因為不出意外的話,晚上7點他們會迎來一波用戶高峰,而接下來的時間,他們的任務就是監測一波又一波的用戶高峰,並應對可能到來的突發流量。

伴隨著新年的鍾聲敲響,鄒方明眼前的監測軟件一切正常,他們終於可以鬆一口氣,因為又挺過了一年“春保”。

鄒方明現在是騰訊基礎架構部自研業務中心總監,他所在部門的主要職責是做騰訊內部自研業務的研發支撐,簡單來說,就是該部門接入了騰訊超過90%的業務,用戶平時使用的騰訊產品,如微信、QQ等,底層的技術支撐都與它相關。

而“春保”是春節重保的簡稱,鄒方明告訴21世紀經濟報導,騰訊的產品以社交產品為主,而社交產品一定會有熱點事件、關鍵時刻以及重點保護時刻,其中,春節則是挑戰最大、任務最重的重點保護時刻。

據悉,騰訊內部開始設立“春保”項目是從2013年春節開始。騰訊雲副總裁、騰訊基礎架構部總經理肖誌立在接受記者採訪時表示,春節的高峰期其實在PC互聯網時代就有,只不過那時候,用戶上網還沒有那麼方便,所以當時的高峰不是在除夕,而是在初四或初五,大家過完春節開始工作後,要把一些照片上傳到QQ空間進行分享,但整體來說,那時候的保障壓力不是很大。

但從2012年開始,尤其是當微信出現之後,移動互聯網的浪潮席捲而來,用戶的溝通互動變得更加實時,也由此催生出真正的春節高峰。之所以說這是真正的高峰,是因為與過去PC互聯網時代相比,它的峰值有了成百上千倍的增長,當然,這種巨大的反差,也給從事技術保障的工作人員,留下了許多慘痛的回憶。

意外不斷的“春保”

對鄒方明來說,2013年是他第一次經曆春保,那也是他最“痛苦”的一年。

當時,2011年1月發佈的微信正快速發展,2012年3月,微信的用戶量突破1億,到了2013年初,微信的用戶量已經突破3億。而鄒方明是微信聊天圖片以及聊天視頻整套系統的研發負責人,如上文所述,2013年之前,騰訊內部並沒有明確的春保概念,鄒方明也沒遇到過增長如此之快的產品,所以,在他腦海里,也沒想過微信會突然出現“大擁堵”。

2013年的除夕,在整個移動社交如火如荼的背景下,人們在移動端的互動變得越發頻繁。微信里,用戶們拉起各種群聊,並開始群發拜年視頻。社交產品的魅力在於它的裂變,一傳十,十傳百,但對技術人員來說,這種裂變帶來的則是恐怖的高併發。

鄒方明回憶,2013年除夕,拜年視頻的量突然增長了六、七倍,這已經超過他們的儲備。當時,面對突如其來的巨大視頻量,鄒方明有些束手無策,因為沒有準備預備方案,也無法臨時調取更多服務器資源,為了保護整個系統不崩掉,他們只能採取降級的方法。

這裏的降級,是指限製用戶發視頻的大小,一開始的限製是10兆以上的視頻不讓發,後來變成6兆、4兆、2兆,整個降級過程從當日晚上7點一直持續到10點,整整三個小時。鄒方明稱,8點多最高峰的時候,他們幾乎限製了70%-80%的用戶發視頻,這是非常可怕的,期間他們也收到了大量用戶投訴,但當時確實束手無策,只能通過這種粗暴的方式,把流量高峰熬過去。

有了2013年春節的慘痛經驗之後,騰訊內部開始進行“春保”籌備。鄒方明介紹,“春保”項目的籌備週期基本上從每年10月份開始,持續兩到三個月左右。籌備過程中,產品和技術團隊會先把春節期間的產品玩法大致都確定下來,然後再根據這些玩法來衡量各個產品要用多少帶寬和存儲等。

當然,這個時候並不是產品提出多少資源需求就都能滿足,鄒方明團隊還會把需求和資源做一個著重的平衡,目的是在資源有限的情況下,通過技術的提升和柔性的策略,確保各個產品的用戶體驗。

但2015年春節,在進行了“春保”準備下,意外還是發生了。因為2014年10月,微信上線了小視頻功能,可以分享到朋友圈和聊天界面,所以春保前夕,即10月、11月時,微信小視頻的用戶量並不大,在做預估時,也根據它的量級給了幾十倍的容量。

可到了2015年除夕,微信小視頻突然產生了超出預期的巨大峰值。在春晚開始前的一個小時左右,小視頻的發佈量激增,系統開始出現故障。鄒方明和同事們開始緊急擴容,但是,由於當時微信小視頻的系統是複用騰訊視頻的,更加偏向PGC,而不是UGC,所以處理過程也更加複雜。

鄒方明回憶稱,當時緊急擴容了一個索引模塊後,索引沒問題了,但隨著量繼續上漲,前端接入模塊又出現問題,然後處理好接入模塊後,另一個視頻處理模塊又不行了。

“所以當天晚上,問題也持續了約三個小時,當我們把能擴的地方都擴完之後,用戶高峰已經過去”,鄒方明說,雖然整個系統沒有受影響,但是對用戶來說,這個除夕的小視頻體驗是不好的。所以2015年春節過後,騰訊基礎架構部對整個視頻系統架構做了調整,並針對小視頻的場景做了優化。

抗住紅包壓力

2015年春節,除了微信小視頻帶來的緊急狀況之外,騰訊“春保”實際上還迎來了另外一場大考——微信紅包的春晚互動。

肖誌立向記者表示,大概2014年11月,他們從微信支付團隊得知,春節要和春晚合作進行一場紅包活動,觸達的用戶規模會很大。當時,距離春節只有兩個月的時間,這對肖誌立團隊而言,無疑是一次重大考驗。

肖誌立稱,當時面臨的問題主要有三個:首先是原來的紅包系統肯定不能用了,因為原來的系統本來是面向公司內部幾萬人使用的,現在要擴大到給10億用戶發紅包,整個系統必須重做。

其次,春節的紅包活動是通過春晚口播的形式,讓用戶參與搶紅包,這裡面的挑戰是很難預估系統要承載多少訪問量。“不知道要承受多大的壓力,這其實是做架構的大忌,但我們當時確實沒有任何參考”,肖誌立說。

最後,是這次技術保障工作只許成功,不許失敗,“如果失敗,那就是在全國人民前面丟臉,所以技術層面的壓力會比任何時候都大”。

在這不到兩個月的時間里,肖誌立帶著騰訊基礎架構部的紅包系統團隊和微信支付團隊一起,通宵達旦的待在深圳騰訊大廈,每天基本上是晚上12點鍾提交版本,淩晨1點開始做測試,大概淩晨三四點鍾出結果,大家再繼續上來研究第二天如何優化和改造。

一直到2015年2月10日左右,整個紅包系統基本上確定了下來。但直到除夕前三天,整個團隊仍然在改代碼,因為在反複測試過程中,只要發現可能帶來風險的地方,肖誌立都會讓團隊把它改掉,“我們必須儘量把所有風險都排除掉”。

最終,騰訊的2015年春晚紅包活動圓滿完成,微信支付也憑藉這次合作,在移動支付領域完成了對支付寶的追趕。據微信官方數據顯示,2015年除夕當日,微信紅包收發總量達到10.1億次,在20點到次日淩晨零點48分的時間里,春晚微信搖一搖互動總量則達到110億次。

騰訊基礎架構部技術運營中心總監肖攀告訴21世紀經濟報導記者,對於紅包系統來說,如果遇到了超預期的巨大流量壓力,他們也會採取一些降級的辦法,比如從金額上做一些限製,這樣就可以把併發量快速降下來。

另外據肖攀介紹,整個紅包系統其實像漏鬥一樣,它每一層都在過濾,所以搶紅包的“搶”這一下,是用戶併發量最高的,其次是拆,等到最後真正的交易環節,其實用戶併發量已經少了很多。

雖然近幾年,微信紅包的發展速度也很快,但是再也不會像2015年那樣出現從10萬量級到10億量級的飛躍式增長。目前,微信紅包的用戶量已經接近於微信的用戶量,春節期間併發量的增長也相對穩定,對騰訊的紅包系統來說,現在的主要工作就是對系統進行不斷優化,降低成本和資源。

“春保”變成常態

鄒方明告訴記者,若回顧騰訊過去九年的春保,大致可以分為兩個階段,第一個階段是2013年至2016年,可以稱為承載力不足的階段。

在這段時間,有業務快速發展的原因,也有騰訊自身技術架構不完善的原因,總之就是系統能力不夠支撐業務的增長,導致了各種故障的出現。所以這個時期,主要工作就是提升承載能力,除了增加硬件設備,在技術手段上,也要不斷進行性能提升。

第二個階段則是2016年以後,這個階段,在過去幾年的沉澱和優化下,騰訊的承載能力已經基本沒有問題,這時候要做的就是精益求精。伴隨著用戶對產品體驗的要求不斷增加,騰訊也需要在保證系統正常運行的基礎上,不斷優化承載能力,比如過去,可能對技術的要求是不能拒絕服務超過30分鐘,而現在,拒絕服務的情況已經不會發生,對技術的要求則變成服務的時延不能超過5分鐘。

今年的春保,肖誌立整體體驗下來,感覺十分順暢,所有的高峰期都在預測範圍內。所以,對肖誌立帶領的騰訊基礎架構部來說,像春保這樣的重點時刻的保障工作,在現有的業務條件下,壓力已經趨於平穩,要提防的主要是一些突然出現的關鍵時刻。

比如2020年初,因為新冠疫情的原因,讓2019年底才上線的騰訊會議迎來了一次關鍵時刻。按照騰訊會議團隊原先的目標,是預計2020年底的DAU達到5萬,到2月中旬時,騰訊會議的同時在線用戶已經突破400萬,達到了1000倍的增長。

這種大幅的增長,也給騰訊基礎架構部帶來了巨大的挑戰。肖誌立表示,其實單從技術層面,在線用戶幾百萬的業務騰訊有很多,做這種業務的支撐也不是什麼難題。但當時之所以情況緊急,是因為疫情的影響下,他們無法找到足夠的物理資源,比如運營商的BGP寬帶滿足不了,外網的IP地址也滿足不了,一些設備供應商無法復工,各種設備也供應不上。

這個時候,這些硬件的問題只能通過軟件來想辦法解決。肖誌立稱,IP地址不夠,就想辦法用端口複用的技術,新機器供應不了,就從全國各地調用自己的服務器,重新通過虛擬化或者軟件架構的方式去適配,爭取先把騰訊會議的業務支撐起來。

就是在這種條件極為艱巨的情況下,騰訊會議完成了100萬核的擴容。其實從難度上來講,騰訊會議的緊急擴容要比2015年應對春晚紅包活動更難,因為這是在完全沒有準備的情況下,應對的一次挑戰。而騰訊之所以能夠頂住壓力,也是因為過去經曆了太多次像“春保”一樣的重要時刻。

鄒方明便表示,現在從故障發生的頻率和維護的穩定性來說,技術保障工作變得更加容易了,因為大家都身經百戰,很多員工從2013年春保工作至今,對每個業務的性能和需求都十分熟悉。所以現在出現大狀況,主要就是因為沒想到,但實際上,這種沒想到的情況也已經越來越少。

(作者:白楊 編輯:李清宇)

關注我們Facebook專頁
    相關新聞
      更多瀏覽