騰訊10年維護微信系統不崩的故事,是一個從手忙腳亂到心平氣和的成長故事,是一個技術系統從無到有的故事,也是一個國民級用戶產品的技術祕密。

作者:任曉寧

壹  ||微信誕生早期,上面的時刻時有發生。2015年,微信紅包贊助春晚,除夕當天紅包量級從10萬級提升到10億級,負責運維的肖攀,買了個QQ公仔,插上兩根香,每當覺得心裏不穩妥,就去公仔前拜一拜,祈求千萬不要出事。

貳  ||長期以來,騰訊在互聯網公司中都以產品力著稱,產品的背後,是技術平臺的助力。微信誕生10年,背後的系統也有所不同。

叄  ||  當系統遭遇了遠超預估的訪問量,就要降級,比如朋友圈視頻平時一個視頻大概2兆,但高峯時刻可以先砍一刀,把2兆砍成1兆,讓更多的人有視頻可以看。

肆  ||  2018年之後,微信很少再有關鍵時刻。這一年,微信紅包的用戶量基本上接近於微信的用戶量,之後的增長基本上已經平穩。

伍  ||  微信成立10年,騰訊技術團隊也跟着走了10年,他們經歷高壓,經歷崩潰,經歷焦慮,到現在視爲尋常,一路走來,他們見證微信用戶從0漲到12億用戶,與有榮焉。

微信爲什麼沒崩過?

12億中國人都在使用微信,卻很少有人思考過這個問題。其實,微信也曾徘徊在瀕臨崩潰的邊緣,騰訊基礎架構部運營管理支撐中心總監鄒方明現在還記得2014年除夕,人們剛學會用微信發拜年視頻,流量直接爆掉,系統瀕臨崩盤,公司上下所有人的壓力都集中到他一個人身上,等他做出決定。他說,那是他最痛苦的時刻。

直到現在,在微信使用量最大的時刻,比如除夕,或是元旦、七夕、中秋,或是情人節,騰訊團隊也會提前幾個月籌備資源。前幾年的高峯期,負責騰訊紅包系統運維的肖攀甚至會拜一下QQ公仔,就像拜佛一樣,求系統不崩。

現在,他們已經積累了一整套保證系統不崩的方法論。

騰訊10年維護微信系統不崩的故事,是一個從手忙腳亂到心平氣和的成長故事,是一個技術系統從無到有的故事,也是一個國民級用戶產品的技術祕密。騰訊技術團隊向經濟觀察報講述了這些故事,他們構建的系統,使用的技術,在運行中積累的經驗教訓,對於其他公司,或可提供些許借鑑。

瀕臨崩盤的時刻

一刀切關閉系統、還是繼續尋找漏洞?是鄒方明必須立刻做出的判斷。

他是騰訊的老人,2006年進入騰訊,負責技術,一手搭建了QQ和微信的聊天圖片、視頻系統。但在2014年除夕微信流量爆發而瀕臨崩盤的時刻,他依舊承受不住這種壓力。“系統全方位崩盤,流量也爆了,前端的系統就好像洪水一樣的,後端的系統更脆弱,連着倒了三四個系統和平臺,不光我們的平臺倒了,底層存儲的其他部門其他系統也倒了。”

體現在用戶側的感受是,用戶在朋友圈把視頻發出去了,但身邊朋友一個都沒看到。

用戶投訴源源不斷而來,鄒方明需要立刻做出判斷。他可以花更多時間去查一下到底是什麼原因導致,徹底解決問題,或是乾脆一刀割下去,先暫時限制視頻功能。“哪個方案能夠最快恢復服務,我事後在腦海裏模擬了無數遍,也想不出哪一個更快。”

鄒方明站在機房前,對着那臺顯示崩盤的電腦,身邊的運維看着他,手指放在鍵盤上等待指令,老闆在辦公室一言不發,產品團隊需要一個回覆,公司外數以億計的用戶,所有人都在等待着他的指令。

雖然只有十幾分鍾,但每一秒都是煎熬。

鄒方明最終決定一刀切。至少切斷後,再次恢復,能給到用戶繼續使用的可能性。否則,不知道要排查多久才能真正找出問題。直到現在,他也不能說自己的選擇是最正確的,但那是最快解決問題的選擇。

微信誕生早期,上面的時刻時有發生。2015年,微信紅包贊助春晚,除夕當天紅包量級從10萬級提升到10億級,負責運維的肖攀,買了個QQ公仔,插上兩根香,每當覺得心裏不穩妥,就去公仔前拜一拜,祈求千萬不要出事。

微信後期,一套成熟的穩定系統已經形成,依舊有不可預料的事情發生。2020年2月,騰訊會議在一個月時間增長1000倍,騰訊雲副總裁、騰訊基礎架構部總經理肖志立也遇到了難題,他的難題不是技術原因,而是物力資源跟不上。

當時,因爲疫情,運營商的BGP帶寬滿足不了、外網IP地址滿足不了,並且,由於設備供應商無法復工,設備也供應不了。

肖志立給聯想打電話,詢問能不能給庫房供1萬臺機器,對方說不好意思,員工都回家了,疫情期間沒有辦法回來。

直到最後,新機器也沒有送到。最終,還是隻能死磕技術,通過軟件的優化,把之前一個單元支持100路的技術,提升到支持200路,才解決了物理資源不足的難題。

一個從無到有的系統

12億用戶感知到的,是每天都在使用的微信這個產品。他們感知不到的地方,微信背後僅技術平臺就包括圖片平臺、音視頻傳輸平臺、紅包系統、小視頻平臺等等,這些平臺接入騰訊內部超過90%的業務。

平臺組合在一起,形成龐大的系統,基本能解決已知與未知的問題。這些平臺的形成,不是一蹴而就的,而是經歷了漫長的過程。

圖片系統歷史最悠久,早在2006年的QQ時代就開始使用。當年,QQ用戶突破1000萬,上線了QQ空間相冊,產品很受歡迎,但對於技術團隊來說,一個首先面對的問題就是:撐不住了。存儲方案也好,流量方案也好,索引方案也好,都支撐不了用戶訴求。“整個底層存儲都已經瘋掉了,”鄒方明來到這個部門時,恰好經歷了這樣的時代。一些公司在近幾年贊助春晚或遇到突發事件時,突然發現的問題,騰訊在十幾年前也遇到過。現在微信、QQ系統的穩定,是當年喫虧後積累的經驗教訓。

用戶對圖片的訴求,延伸出了騰訊第一代存儲系統,衍生了TFS,之後有了相冊系統,不過,當時,他們還沒有想到做技術平臺。

不久,新矛盾爆發。QQ農場火爆後,每個用戶都有很多頭像,但原有的相冊系統支撐不了圖像高IO(輸入輸出)。這種情況下,鄒方明把相冊系統做了簡單的分支,就叫頭像系統。

頭像系統和相冊系統,都是圖片,應該分開還是融合?內部當時有些焦灼,經過很長的PK,他們覺得,還是應該融合到一起。融合之後,騰訊有了第一個技術平臺,圖片平臺。

相對於之前各自分離的系統,平臺的優勢在於成本。騰訊其他團隊也在做圖片服務,他們發現,花了這麼多年研發精力,還不如接入到圖片平臺中,把研發團隊的生產力解放出來。

騰訊的其他平臺隨後逐漸誕生。

2016年,視頻平臺誕生。2019年,音視頻傳輸平臺形成。期間還有紅包系統、文件系統、網盤系統,用戶最核心的幾個場景平臺,都由基礎架構部搭建完成。

長期以來,騰訊在互聯網公司中都以產品力著稱,產品的背後,是技術平臺的助力。

去年火爆的視頻號就是一個典型案例,一年時間,視頻號推出了一系列功能,產品人員提出功能需求後,技術人員第二天或者是第三天就能拿出方案,這離不開平臺的服務和支撐。“產品有想法時,研發人員能夠很快速做出一個模型,儘快做迭代和嘗試。”鄒方明解釋,“能夠在60分的基礎上去做加法,產品技術團隊可以把視角放在用戶喜歡玩的玩法上面,放在終端體驗的細節上面去,從而從整個研發的長週期中掙脫出來。”

微信誕生10年,背後的系統也有所不同。2016年之前,系統處於性能不足階段,當時出現問題,無論是漏洞或是代碼問題,事件爆發的根本原因是,系統能力不足導致的故障。

2016年之後,系統升級,此後再有熱點,或是再有突然事件,對於技術來說,就只是量級提高了,都在系統可以支撐的範圍內。

在雲時代,系統的支撐能力又有了增加。QQ於2020年完全上雲,整體都在雲端。微信花了3年時間上雲,今年會全部上雲。上雲的好處是,如果有突發情況要從其他的業務騰挪資源,速度快很多。“否則我們就得先把設備從A業務上下來,再添加到B業務去,再做測試驗證,這樣時間就長很多。”

微信10年,系統的基礎建設主要朝着兩個主要的目標在做。“一個是系統的健康性,比如你的熔斷能力,自我恢復能力,每年我們都在找方法。另一個方向就是系統單位成本的承載能力。從字面上去解釋,因爲我們的資源團隊、產品團隊,都會給出一個固定的成本,這固定的10000臺設備,能夠支撐100萬次請求,還是500萬次請求,是每年都在持續優化和迭代的過程。我們會發現,只要你的承載能力強了,就可以把每個危急時刻變成不危急。”鄒方明說。

產品不崩的方法論

不過,即使有了系統,也不能完全保證不崩。尤其對於一款12億人使用的社交產品,任何時刻都有不可控性。

直到現在,騰訊技術團隊也不敢打包票說系統完全可控。“推演也是算不過來的,總會算錯的。比如說零點全國發紅包的人到底有多少?公司發紅包的量到底有多少?這個東西說實話不是那麼好估了,這個時候我們就會想,有沒有保底的大招,來使得這個訪問量控制在系統可接受的範圍之內,這是非常重要的保底措施。”肖志立說。

崩盤之前,技術部門會提前預演,策劃好“劇本”,“劇本”是一種柔性控制,也可以統稱爲降級。微信用戶有時在高峯期會覺得微信消息有延遲,或是朋友圈視頻分辨率降低,就是一種降級。

當系統遭遇了遠超預估的訪問量,就要降級,比如朋友圈視頻平時一個視頻大概2兆,但高峯時刻可以先砍一刀,把2兆砍成1兆,讓更多的人有視頻可以看。

在不可預判的業務場景,他們基本上都會以這種方法去應對。“高突發的時候,用戶不會用得那麼爽,但能讓90%用戶覺得滿意,不至於說突然量超過預期了,然後就立刻不行了”。

肖志立告訴記者,騰訊一直有一個海量之道的技術方法。在突發比較高時,始終有一個漏斗模型,“第一層先去頂住絕大部分的請求,把符合要求的再往下層漏,再往下層交易最重的系統。這樣能保證承擔的請求是真正需要的請求,而不是把前面所有的請求都打到後面去。”

這個技術方法論被視爲騰訊的保底大招,多年來屢試不爽。

如今只道是尋常

2021年春節,騰訊基礎架構部在一片祥和中度過。除夕5點半,肖志立把當時留守的幾十個兄弟拉到辦公室對面的一個餐廳聚餐,喫到6點半,回來守着機器一起度過了除夕夜。

全程沒有任何驚險時刻,無驚無喜。

肖志立依舊全程盯着。他每年春節前後都在,春節是最考驗微信的時刻,在他們技術內部看來,平時吹什麼牛,都不如扛過春晚的流量來的實在。“每次我也在想,我也不去敲代碼,也不去做指令,爲什麼我要在?我能夠感覺到就是崩盤了之後,大家都指着我去做‘要人命’的決定,出了故障我纔有價值,沒出故障我就像一個閒人。”鄒方明已經記不清自己守過了多少個春晚,只是覺得很感慨。

在基礎架構師的職業生涯裏,非常重要的一點,就是在關鍵時刻做出關鍵決策。

2018年之後,微信很少再有關鍵時刻。這一年,微信紅包的用戶量基本上接近於微信的用戶量,之後的增長基本上已經平穩。

肖攀最近兩年也沒有再拜過QQ公仔了,“都比較有信心。”

現在的系統,已經不再需要大的變動。並且多年春節經驗後,團隊值班的手段和策略都是已經完備和成熟的,還可以提前預判事件。比如今年,他們預測雲年夜飯會提前導致一個小高峯,果然,當晚7點的流量是往年5倍,因爲已經提前預測,今年也平穩度過。

對於現在的騰訊技術團隊,不再有驚心動魄的故事發生。

架構師的經驗教訓

微信成立10年,騰訊技術團隊也跟着走了10年,他們經歷高壓,經歷崩潰,經歷焦慮,到現在視爲尋常,一路走來,他們見證微信用戶從0漲到12億用戶,與有榮焉。“做技術支撐的團隊,一定要有一個好的心態,就是你不在聚光燈下,但是我們心裏面知道今天在臺上的產品那麼成功,跟我們是有很大關係的,自己的內心要足夠強大,要相信這一點。”

他們也摸索出了足夠多和業務部門溝通的方法。鄒方明經常給團隊灌輸的理念是,除非你有確鑿的依據能證明你是對的,不然你就先聽業務部門的。

目前,微信背後的技術系統已經接近完善,“沒有特別明顯的缺陷和短板。”肖志立對此很自信。

不過,技術團隊依舊存在焦慮感。其實,騰訊這支技術團隊一直很穩定,騰訊內部架構幾經大動,技術部門始終沒變。他們經歷了文字互聯網時代、圖片互聯網時代,到了視頻互聯網時代,再到現在的實時音視頻互聯網時代,技術一直在演進,內容越來越豐富,實時性越來越強。這對於背後系統承載能力的要求,對於穩定性、延時的要求,也要比原來高很多,技術永無止境,他們也永遠等待攻克下一個難關。

鄒方明還在持續學習中。他經常參加線下活動,在一些論壇或峯會上,奔到現場面對面和業界大牛交流取經,“我們不能夠關着門做,你必須要到外面找一些可學習的點,業界的大牛很多,他們會有很多比較好的創意和方法論。”“你永遠不知道什麼時候冒出一個新的東西。”肖志立很感慨,“作爲支撐團隊,我們得有這種魄力和能力,能夠在彈藥不夠的情況下支持業務團隊打勝仗。”

相關文章