楠木軒

騰訊儲存技術背後的十五年往事

由 頻長志 釋出於 科技

作者:王德清

出品:雷鋒網產業組

前言:資料“橫行”的今天,用來儲存資料的系統至關重要。而一個大型儲存系統,從醞釀到誕生再到成熟,並不是一件簡單的事情。

騰訊作為國內領先的社交巨頭公司,不僅在2006年自研了TFS等儲存系統支撐了其內部90%+的資料儲存業務,在面向To B業務,騰訊在2018年又自主研發了面向雲場景的「YottaStore」儲存系統,儲存系統要換代,資料遷移是不可避免的,對騰訊這般體量的公司來說,需要莫大的勇氣。

契機之下,雷鋒網與騰訊儲存團隊6位老兵展開了一次深度對話,還原騰訊儲存系統變革背後的那些故事。

這一切要從2006年開始說起。

彼時,網際網路行業正處在社交化浪潮中,騰訊還並非是現如今這般規模的社交巨頭,雖然手握QQ這樣的爆款產品,但在SNS剛剛興起的時代,誰都無法保證可以笑到最後。

也就是這一年,QQ空間作為一款定位於“展示自我和與他人互動的平臺”,被騰訊推了出來,一開始資料表現出乎意料的好,使用者快速增長,活躍度很高,甚至收入也超出預期,但競爭也隨之開始了。

就在QQ空間釋出沒過多久,靠炒房賺得第一桶金的龐東昇決定回到網際網路繼續冒險,他以100萬元人民幣收購了張劍福創辦的個人資料庫公司10770。在稍稍弄明白SNS是怎麼一回事後,龐升東決定將10770改造成互動社交型的51.com。

在龐升東的心中,51的假想敵只有一個,就是騰訊的QQ空間。

只要騰訊出什麼新花樣,51在一個月內一定跟上。更可怕的是,在2006年的大多數月份,51的使用者增長數一直在QQ空間之上,這讓騰訊非常緊張。

“QQ空間”保衛戰勢不容緩,而這場保衛戰第一戰,拼的是“技術”。

上線即“王者”

2006年,剛接手QQ空間的負責人聽到的都是投訴的聲音:「QQ空間無法開啟」;「照片下載速度很慢」……而經過測試,開啟一個空間,需要5秒鐘。

而要解決這些問題,首先要解決的就是儲存這個底層技術。

“2006年,我博士畢業來到騰訊的時候,騰訊還沒有統一的儲存產品或者技術平臺,基本上都是各個業務自己去做一個儲存的系統。”騰訊雲副總裁、雲架構平臺部總經理謝明對雷鋒網說到。

QQ空間登入頁

據騰訊2006年披露的資料顯示,QQ空間上線3個季度,註冊使用者數就突破了5000萬,月活躍使用者數約2300萬,日訪問人數也已經超過1300萬。

那時候,QQ空間的儲存系統僅能支撐所有使用者每天共上傳1000萬張圖片,顯然,面對使用者持續不斷的增長,依靠此前不斷購買儲存伺服器的方式來進行擴容,其速度是無法跟上使用者內容的增長速度。

這些持續增長的UGC資料無疑將會給騰訊儲存帶來巨大挑戰,而如果無法突破這個挑戰,QQ空間第一戰的結果也就難說了。

而這個挑戰被一支剛剛成立的團隊接下了。

一支被騰訊主要創辦人之一、前CTO張志東稱之為“黃埔軍校”的團隊。這支團隊成立的第一個任務就是解決QQ空間發展所帶來的儲存問題,其第一任主帥就是現任騰訊公司高階執行副總裁盧山。

而擺在這個剛剛成立團隊面前的難題,並不亞於愚公家門前王屋、太行兩座大山。

技術人員都是有夢想的,他們希望用技術來解決一切,亦或是他們可以參考的只有2003-2004年Google釋出的關於三大件(BigTable、GFS、MapReduce)幾篇比較知名的論文。

“GFS算是最早期的企業級儲存轉向網際網路大規模廉價分散式儲存比較早期實踐。那時候我們決定去做一個儲存系統,我們當時取名叫TFS。”謝明回憶道。

借鑑Google的幾篇論文,在團隊成立的第二年,TFS儲存系統就上線應用,並全面接管QQ空間的相簿業務。

再回到產品冊遇到使用者投訴,空間團隊要求技術人員製作一張全國地圖,凡是開啟速度高於5秒的被繪成紅色,3秒到5秒之間為黃色,低於3秒的被繪成綠色,地圖製作出來後,掛在牆上,大家看到的是“祖國江山一片紅”,其中,尤以西北、西南和東北地區的顏色最深。

只有一個基礎的TFS儲存系統顯然是不夠的。

“從技術角度來說,圖片都是百K左右的小資料,相比大尺寸的資料來說,這種儲存因為索引密集度更高,帶來的技術挑戰要大很多,一是要解決索引和資料尺寸協調的空間問題,二是要解決大規模下的成本問題。

於是儲存部門根據業務場景的演變,先後推出了適合各種不同圖片儲存場景的儲存系統,如支援實時回收的CTFS系統、支援高頻快速訪問的HTFS系統、支援EC編碼的BTFS系統、基於HDD的鍵值對TDB儲存平臺等

就這樣,技術團隊一塊一塊地啃,在地圖上,綠色和黃色一點一點地增加。花了差不多一年的時間,到2007年年底,一張綠色的中國地圖終於出現在大家的面前。此次速度最佳化上的闖關,為QQ空間日後流量的倍級增長提供了至關重要的保證。

另一座“大山”

但在2009年,另一座大山擋住了“去路”,頻寬不夠了。

“那時所有的資料中心都是在深圳。當時的骨幹網頻寬跟現在實際上不能同日而語,是很小的,QQ相簿高峰時佔用40-50G,而1G的流量對公司的網路就已經是很大的負擔了。QQ空間使用者增長帶來大量的資料讓我們基本上把整個華南地區的骨幹網消化完了。”

擺在謝明他們面前的也就只有一條路了:啟動相簿一通點等專案,將海量業務資料從深圳向西安、杭州、廣州、上海等地分佈,訪問頻寬同時排程到天津、南京、東莞等成本更低的一通機房。

“我記得搬第一個裝置是100T,現在看來100T不大,但那是騰訊歷史上最大的一次資料搬遷了。”

那時,沒有資料中心專線網路可供騰訊使用,因此,謝明與團隊其他成員在半夜透過用公網出口把資料一點一點地“搬到”了西安等地。

而在做資料分佈搬遷的過程中,自身也在同步迭代演進。TFS從3份儲存演進為同時支援1/2/3份資料的多副本儲存;CTFS從2份儲存演進為同時支援2/3份資料儲存。TSSD平臺也從僅支援單機獨享的Uin-Value定製儲存演進為支援多租戶的通用Key-Value儲存

就這樣QQ空間在TFS儲存系統的支撐下,笑到了最後。(51.com被QQ空間擊敗,轉型做了遊戲代理,之後逐漸沒落。)

2009年騰訊儲存團隊合影照片

也就從2009年之後,QQ空間的收入大幅增加,成為排在網路遊戲之後的第二大收入貢獻部門,黃鑽收入在2010年達到峰值,也因此QQ空間獲得2009年度的騰訊合作文化獎。

此後QQ空間的相簿日上傳照片數不再受限(使用者體驗到的受限是騰訊產品部門策略),其照片累計儲存量也多達數萬億張。

TFS儲存系統也逐漸開始為QQ、微信、郵箱、微雲、流媒體加速等提供儲存服務,目前已經支撐起騰訊90%+的資料儲存業務。

微信帶來的“衝擊”

如果現在回憶2014、2015年的網際網路公司的競爭,可能很多人都會想到那時春晚的紅包大戰。

可讓謝明他們萬萬沒想到的是,給TFS儲存系統帶來下一個壓力的節點竟然會是移動網際網路時代的微信朋友圈。

“PC網際網路時代的競爭其實沒有那麼激烈,還在吃人口紅利,創業公司也並沒有那麼多,大家覺得日子都還是很好過的。”

從騰訊釋出的財報顯示,截止2014年底,微信月活躍使用者達到5億,就是這些快速增長的使用者讓儲存團隊感受到了前所未有的衝擊。

這裡要說一下儲存系統在微信中的主要作用,微信使用者在給朋友傳送圖片、影片等檔案,甚至發紅包的時候,首先這些檔案要儲存在騰訊公司的儲存伺服器中,而朋友在看這些圖片和影片檔案的時候,實際上他們是讀取了我們儲存在騰訊伺服器的上的內容。發朋友圈亦是如此。

2014年,隨著4G網路的普及,微信得以推廣,QQ也可以用手機登入,因此,在春節,微信和手機QQ成為了人們送祝福的主要平臺。

“比如在除夕,大家都會到朋友圈去送祝福、發照片、曬年夜飯等……在2014年的除夕,讓我們感受到了壓力。”騰訊雲架構平臺部技術運營與質量中心總監高向冉如是說。

使用者在除夕的0:00-0:30分之間都在用微信去給親友傳送春節祝福,這對騰訊的儲存伺服器的讀寫能力帶來了很大的挑戰。

微信開啟頁面

需要科普的是,為了控制儲存的成本,儲存服務的磁碟容量其實是不斷變大的,但讀寫能力並沒有隨著磁碟容量的變大而提升,實際上單GB的讀寫能力是成倍下降的。

這背後其實,就是在遇到高併發(使用者在同一時間點發訊息/朋友圈)情況下,那時的騰訊儲存伺服器的讀寫能力是無法滿足幾億使用者高並發動作的,使用者的直觀感受就是你的訊息對方無法及時看到,你也可能無法及時收到朋友發給你的微信/朋友圈。

因此,儲存團隊聯合微信產品團隊首先在各個層面制定了相關的柔性策略,保證使用者可以及時的將資訊發出去並能被看到,而資訊的儲存落盤在30分鐘內完成。

而在落盤的過程中,需要儲存團隊透過技術將磁碟的讀寫能力開放到極致。

“壓力其實是挺大的,因為你中間一旦有什麼問題,風險還是很高的。”

而在之後,這樣情況也並不只是在春節的時候發生,無論是哪家公司籌謀的活動,大家都會來微信朋友圈來“曬”。

“很多時候,友商活動策劃做的是否完美,我們可以‘檢驗’的,而檢驗的依據就是某一時間段節點給騰訊儲存帶來的壓力。因為微信的業務太大了,一個活動產生了爆點,就會額外給我們儲存帶來很大的壓力,因為使用者所有分享在朋友圈的圖片和內容最終是要儲存在我們資料中心的。”

得益於2014年春節期間的經歷,騰訊儲存團隊在春節過後就開始針對這些“爆點”制定了柔性策略。

2015年春節,微信與央視合作,為觀看春晚的微信使用者發紅包,也讓微信的使用者量快速增長,除夕凌晨零點的朋友圈等儲存場景也達到了數十倍的增長。

2016年騰訊儲存團隊春節值班零點後留影

“微信是一個要出海的業務,出海其實給我們帶來了很多挑戰。”

說這句話的是現任騰訊雲架構平臺部系統研發中心總監郭振宇:“微信出海是有一些競爭對手,特別是在東南亞有LINE,還有WhatApp,東南亞的人和自己國內人進行資料溝通的鏈路很長。”

顯然,這是不利於微信搶佔海外市場的。

作為公司業務的支援方,我們在儲存上面要配合微信團隊做更定製化的服務,因為微信也是騰訊重要戰略業務,所以當時我們團隊為微信做了很多儲存相關的業務系統。

郭振宇接著說:“比如怎麼樣讓圖片傳輸更快,我們在全國建立了很多接入點,使用者資料只需要傳到最近的地方,國外只傳到國外資料中心,內地也只需傳到內地資料中心。”

而這一切,其實對於儲存團隊來說,都不再是什麼難題。

來自外部的“挑戰”

雲計算的發展,讓很多廠商都瞄向了To B的生意,騰訊雲亦是如此,但這又何其容易?

集團層要制定大的戰略,事業部要具有To B的思維,技術上也需要具有To B 的意識。

但騰訊的儲存部門卻在此走了一次“彎路”。

騰訊雲副總裁、雲架構平臺部總經理謝明

“說到騰訊雲,其實在2012年騰訊開放平臺就已經開始做雲了,但是開放平臺跟現在的騰訊雲並不一樣,開放平臺時候,我們和合作夥伴對接時我們是資源方,因為你要用QQ、QQ空間的資源。但是到後來騰訊雲做To B服務的時候,這時候要靠自己的實力去證明我們是專業的。”謝明如是說。

此時,支援騰訊自己業務的TFS儲存系統等,已經成熟且穩定。在騰訊看來,將TFS儲存系統進行一次產品包裝後也能服務好外部第三方業務。

谷歌其實就是這麼做的,目前,Google的雲端儲存產品GCS建立在ColossusV2的根基上。ColossusV2是典型的元資料Federation架構的分散式檔案儲存系統,說白了ColossusV2就是Google由GFS儲存系統改進最佳化而來的。

“但Google的GFS儲存系統是誕生於雲計算興起之前。”現任雲架構平臺部儲存研發中心總監楊奮強接著說:

那時候扁平式的物件儲存場景不像今天這樣豐富清晰,所以分散式檔案系統管理的單位是檔案,過多過小的檔案會導致元資料管理爆炸,所以主要面向幾十M的大檔案,這樣一個百位元組的元資料可以管理幾十M的大檔案,元資料單位元組管理效率大概百K級別,冗餘的目錄樹顯然對物件儲存場景是多餘而且低效的。

而此時,又有幾個問題擺在了騰訊雲端儲存產品團隊和儲存技術團隊面前:

  • 雲計算迅猛發展,行業競爭的日益激烈,客戶可選擇面較大,對功能、效能、質量、價格等方面的需求不斷增強;

  • 從自身現狀來說,資料量的不斷增大,隨之帶來軟硬體成本、運維成本、最佳化成本的日趨增大;

  • 行業下游的基礎設施,如大型資料中心、新機型、新硬體、各種儲存介質、網路環境的不斷髮展演進。

在這個形勢下,2017年,騰訊儲存部門決定要做一個新的儲存系統,一個更適合雲計算的Blob儲存系統。

著眼於未來

“開始我們想的名字是BlobStorage。”

楊奮強笑著對雷鋒網說:“Blob的意思是一大塊連續的二進位制資料,像一個影片檔案就是一個Blob資料,Storage的意思是儲存空間。”

顯然,這完全是大家印象中程式設計師的“正常操作”,但沒有獲得謝明的贊同。

最終儲存系統的名字被確定為「YottaStore」。

“我們是做儲存的,每天打交道的詞彙比如說GB、TB、PB、EB、ZB,而在ZB上面是YB,也就是YottaByte,目前全世界所有的資料加起來也不超過一個Yotta。”楊奮強接著說。

“另外這個單詞又朗朗上口,中文譯名‘有他’,給人安全可靠放心的感覺,我們在內部的分享課程,就是‘儲存有他,能力無限’。”

而這個名字,也代表了騰訊儲存部門的野心,這個儲存系統的理論峰值是YB。

“我們現在一個叢集可以儲存1ZB的資料,如果是1000個這樣的叢集,那我們就可以儲存一個YB的資料。”楊奮強很自信的說。

回到重做一個儲存系統的問題上,為何騰訊會做出這樣一個決定?

“我們當年將內部業務上雲的時候,TFS系統支撐我們內部業務的海量資料都是沒問題的,支援外部業務當然也沒有問題,但我們要把目光放到十年以後。”謝明如是說。

但事實上,重新自研一個儲存系統不是一件容易的事情。

再以谷歌為例,為什麼谷歌不做一個適合於GCS的雲上的Blob儲存系統?其實Google也深諳ColossusV2的問題,在幾年前,谷歌就組建了一個二三十人團隊去做這件事,但最終卻不了了之。

由於業務驅動著技術的變革,騰訊選擇了Google沒有成功的那條道路,YottaStore在2018年開始了研發,並於2019年正式上線。

“YottaStore,我一直說它是一個雲資料儲存系統,這跟當前業界絕大多數公司的做法是完全不同的,它的優勢也是很明顯的。”

楊奮強介紹說:“YottaStore的極限是一個叢集可以管理超上千萬臺伺服器,而要管理這上千萬臺的機器,我們原資料管理只需要用600G左右的空間,用一臺機器就能存下所有的索引結構,管理上千萬臺的儲存節點伺服器,這在業界是絕無僅有的。”

此外,楊奮強表示,YottaStore一個叢集可以同時支援各種不同的冗餘模式、任意的EC編碼,同時,叢集可以自適應各種各樣不同的機型;對於儲存節點的升級,無論叢集規模多大,YottaStore都可以在20分鐘內完成一個叢集的升級。

更令騰訊儲存團隊驕傲的是,YottaStore開始上線大規模支撐業務的前三個月一直維持百分之百的可用性,而目前系統仍實現單人值周零故障執行。

“YottaStore儲存系統上線之後,一反通常系統上線後的緊張忙碌的狀態。就在系統上線的第二天,我們研發團隊懷著無比輕鬆的心情去吃了一頓人均500多的自助餐,來犒勞自己。”

楊奮強笑著對雷鋒網說道。

使用者最為直觀感受的就是,基於YottaStore儲存的騰訊雲COS儲存的最低價格為1分錢/GB/月,而其資料永續性達到了99.999999999%(11個9)以上。

YottaStore上線後即獲得了騰訊公司級的業務突破獎。

而如今,基於YottaStore儲存系統的騰訊雲物件儲存COS平臺,正在為快手、OPPO、小紅書、海康、獵豹、58同城等幾十多萬個企業客戶提供了可靠的儲存服務,整體資料量高達EB級別。

騰訊內部的“黃埔軍校”

從各種渠道的資訊來看,關於騰訊這支儲存團隊的報道少之又少,但其實在內部,這支團隊被稱之為騰訊的“黃埔軍校”。

現任騰訊雲架構平臺部研發中心總監朱建平也曾是這其中的一員。

“儲存部門走出了很多人去負責很多其它方向的技術研發。比如做FPGA異構加速的,做醫療AI,做影片編解碼,同時還從這個團隊裡面不斷孵化出創新業務。”

朱建平接著說:“我們內部說儲存部門是專家的搖籃,分散式儲存平臺,系統設計也好,還是運營等各個維度,面臨的問題比較多,儲存部門特別能鍛鍊人,所以過往一般都是最好的畢業生放進來,然後這邊能力成熟了以後,慢慢又分流到其他戰場去。”

據雷鋒網瞭解,目前騰訊AI、伺服器、運管、研效、搜尋、CDN、影片編碼等很多領域的帶頭人都是從儲存團隊出來的。

而也正是這樣的一個團隊,在為騰訊默默築建著技術的根基。