0
作者:王德清
出品:雷鋒網產業(yè)組
前言:數據“橫行”的今天,用來存儲數據的系統(tǒng)至關重要。而一個大型存儲系統(tǒng),從醞釀到誕生再到成熟,并不是一件簡單的事情。
騰訊作為國內領先的社交巨頭公司,不僅在2006年自研了TFS等存儲系統(tǒng)支撐了其內部90%+的數據存儲業(yè)務,在面向To B業(yè)務,騰訊在2018年又自主研發(fā)了面向云場景的「YottaStore」存儲系統(tǒng),存儲系統(tǒng)要換代,數據遷移是不可避免的,對騰訊這般體量的公司來說,需要莫大的勇氣。
契機之下,雷鋒網與騰訊存儲團隊6位老兵展開了一次深度對話,還原騰訊存儲系統(tǒng)變革背后的那些故事。
這一切要從2006年開始說起。
彼時,互聯網行業(yè)正處在社交化浪潮中,騰訊還并非是現如今這般規(guī)模的社交巨頭,雖然手握QQ這樣的爆款產品,但在SNS剛剛興起的時代,誰都無法保證可以笑到最后。
也就是這一年,QQ空間作為一款定位于“展示自我和與他人互動的平臺”,被騰訊推了出來,一開始數據表現出乎意料的好,用戶快速增長,活躍度很高,甚至收入也超出預期,但競爭也隨之開始了。
就在QQ空間發(fā)布沒過多久,靠炒房賺得第一桶金的龐東升決定回到互聯網繼續(xù)冒險,他以100萬元人民幣收購了張劍福創(chuàng)辦的個人數據庫公司10770。在稍稍弄明白SNS是怎么一回事后,龐升東決定將10770改造成互動社交型的51.com。
在龐升東的心中,51的假想敵只有一個,就是騰訊的QQ空間。
只要騰訊出什么新花樣,51在一個月內一定跟上。更可怕的是,在2006年的大多數月份,51的用戶增長數一直在QQ空間之上,這讓騰訊非常緊張。
“QQ空間”保衛(wèi)戰(zhàn)勢不容緩,而這場保衛(wèi)戰(zhàn)第一戰(zhàn),拼的是“技術”。
2006年,剛接手QQ空間的負責人聽到的都是投訴的聲音:「QQ空間無法打開」;「照片下載速度很慢」……而經過測試,打開一個空間,需要5秒鐘。
而要解決這些問題,首先要解決的就是存儲這個底層技術。
“2006年,我博士畢業(yè)來到騰訊的時候,騰訊還沒有統(tǒng)一的存儲產品或者技術平臺,基本上都是各個業(yè)務自己去做一個存儲的系統(tǒng)。”騰訊云副總裁、云架構平臺部總經理謝明對雷鋒網說到。
QQ空間登錄頁
據騰訊2006年披露的數據顯示,QQ空間上線3個季度,注冊用戶數就突破了5000萬,月活躍用戶數約2300萬,日訪問人數也已經超過1300萬。
那時候,QQ空間的存儲系統(tǒng)僅能支撐所有用戶每天共上傳1000萬張圖片,顯然,面對用戶持續(xù)不斷的增長,依靠此前不斷購買存儲服務器的方式來進行擴容,其速度是無法跟上用戶內容的增長速度。
這些持續(xù)增長的UGC數據無疑將會給騰訊存儲帶來巨大挑戰(zhàn),而如果無法突破這個挑戰(zhàn),QQ空間第一戰(zhàn)的結果也就難說了。
而這個挑戰(zhàn)被一支剛剛成立的團隊接下了。
一支被騰訊主要創(chuàng)辦人之一、前CTO張志東稱之為“黃埔軍?!钡膱F隊。這支團隊成立的第一個任務就是解決QQ空間發(fā)展所帶來的存儲問題,其第一任主帥就是現任騰訊公司高級執(zhí)行副總裁盧山。
而擺在這個剛剛成立團隊面前的難題,并不亞于愚公家門前王屋、太行兩座大山。
技術人員都是有夢想的,他們希望用技術來解決一切,亦或是他們可以參考的只有2003-2004年Google發(fā)布的關于三大件(BigTable、GFS、MapReduce)幾篇比較知名的論文。
“GFS算是最早期的企業(yè)級存儲轉向互聯網大規(guī)模廉價分布式存儲比較早期實踐。那時候我們決定去做一個存儲系統(tǒng),我們當時取名叫TFS。”謝明回憶道。
借鑒Google的幾篇論文,在團隊成立的第二年,TFS存儲系統(tǒng)就上線應用,并全面接管QQ空間的相冊業(yè)務。
再回到產品冊遇到用戶投訴,空間團隊要求技術人員制作一張全國地圖,凡是打開速度高于5秒的被繪成紅色,3秒到5秒之間為黃色,低于3秒的被繪成綠色,地圖制作出來后,掛在墻上,大家看到的是“祖國江山一片紅”,其中,尤以西北、西南和東北地區(qū)的顏色最深。
只有一個基礎的TFS存儲系統(tǒng)顯然是不夠的。
“從技術角度來說,圖片都是百K左右的小數據,相比大尺寸的數據來說,這種存儲因為索引密集度更高,帶來的技術挑戰(zhàn)要大很多,一是要解決索引和數據尺寸協調的空間問題,二是要解決大規(guī)模下的成本問題。”
于是存儲部門根據業(yè)務場景的演變,先后推出了適合各種不同圖片存儲場景的存儲系統(tǒng),如支持實時回收的CTFS系統(tǒng)、支持高頻快速訪問的HTFS系統(tǒng)、支持EC編碼的BTFS系統(tǒng)、基于HDD的鍵值對TDB存儲平臺等。
就這樣,技術團隊一塊一塊地啃,在地圖上,綠色和黃色一點一點地增加。花了差不多一年的時間,到2007年年底,一張綠色的中國地圖終于出現在大家的面前。此次速度優(yōu)化上的闖關,為QQ空間日后流量的倍級增長提供了至關重要的保證。
但在2009年,另一座大山擋住了“去路”,帶寬不夠了。
“那時所有的數據中心都是在深圳。當時的骨干網帶寬跟現在實際上不能同日而語,是很小的,QQ相冊高峰時占用40-50G,而1G的流量對公司的網絡就已經是很大的負擔了。QQ空間用戶增長帶來大量的數據讓我們基本上把整個華南地區(qū)的骨干網消化完了?!?/p>
擺在謝明他們面前的也就只有一條路了:啟動相冊一通點等項目,將海量業(yè)務數據從深圳向西安、杭州、廣州、上海等地分布,訪問帶寬同時調度到天津、南京、東莞等成本更低的一通機房。
“我記得搬第一個設備是100T,現在看來100T不大,但那是騰訊歷史上最大的一次數據搬遷了?!?/p>
那時,沒有數據中心專線網絡可供騰訊使用,因此,謝明與團隊其他成員在半夜通過用公網出口把數據一點一點地“搬到”了西安等地。
而在做數據分布搬遷的過程中,自身也在同步迭代演進。TFS從3份存儲演進為同時支持1/2/3份數據的多副本存儲;CTFS從2份存儲演進為同時支持2/3份數據存儲。TSSD平臺也從僅支持單機獨享的Uin-Value定制存儲演進為支持多租戶的通用Key-Value存儲。
就這樣QQ空間在TFS存儲系統(tǒng)的支撐下,笑到了最后。(51.com被QQ空間擊敗,轉型做了游戲代理,之后逐漸沒落。)
2009年騰訊存儲團隊合影照片
也就從2009年之后,QQ空間的收入大幅增加,成為排在網絡游戲之后的第二大收入貢獻部門,黃鉆收入在2010年達到峰值,也因此QQ空間獲得2009年度的騰訊合作文化獎。
此后QQ空間的相冊日上傳照片數不再受限(用戶體驗到的受限是騰訊產品部門策略),其照片累計存儲量也多達數萬億張。
TFS存儲系統(tǒng)也逐漸開始為QQ、微信、郵箱、微云、流媒體加速等提供存儲服務,目前已經支撐起騰訊90%+的數據存儲業(yè)務。
如果現在回憶2014、2015年的互聯網公司的競爭,可能很多人都會想到那時春晚的紅包大戰(zhàn)。
可讓謝明他們萬萬沒想到的是,給TFS存儲系統(tǒng)帶來下一個壓力的節(jié)點竟然會是移動互聯網時代的微信朋友圈。
“PC互聯網時代的競爭其實沒有那么激烈,還在吃人口紅利,創(chuàng)業(yè)公司也并沒有那么多,大家覺得日子都還是很好過的?!?/p>
從騰訊發(fā)布的財報顯示,截止2014年底,微信月活躍用戶達到5億,就是這些快速增長的用戶讓存儲團隊感受到了前所未有的沖擊。
這里要說一下存儲系統(tǒng)在微信中的主要作用,微信用戶在給朋友發(fā)送圖片、視頻等文件,甚至發(fā)紅包的時候,首先這些文件要存儲在騰訊公司的存儲服務器中,而朋友在看這些圖片和視頻文件的時候,實際上他們是讀取了我們存儲在騰訊服務器的上的內容。發(fā)朋友圈亦是如此。
2014年,隨著4G網絡的普及,微信得以推廣,QQ也可以用手機登錄,因此,在春節(jié),微信和手機QQ成為了人們送祝福的主要平臺。
“比如在除夕,大家都會到朋友圈去送祝福、發(fā)照片、曬年夜飯等……在2014年的除夕,讓我們感受到了壓力?!彬v訊云架構平臺部技術運營與質量中心總監(jiān)高向冉如是說。
用戶在除夕的0:00-0:30分之間都在用微信去給親友發(fā)送春節(jié)祝福,這對騰訊的存儲服務器的讀寫能力帶來了很大的挑戰(zhàn)。
微信打開頁面
需要科普的是,為了控制存儲的成本,存儲服務的磁盤容量其實是不斷變大的,但讀寫能力并沒有隨著磁盤容量的變大而提升,實際上單GB的讀寫能力是成倍下降的。
這背后其實,就是在遇到高并發(fā)(用戶在同一時間點發(fā)消息/朋友圈)情況下,那時的騰訊存儲服務器的讀寫能力是無法滿足幾億用戶高并發(fā)動作的,用戶的直觀感受就是你的消息對方無法及時看到,你也可能無法及時收到朋友發(fā)給你的微信/朋友圈。
因此,存儲團隊聯合微信產品團隊首先在各個層面制定了相關的柔性策略,保證用戶可以及時的將信息發(fā)出去并能被看到,而信息的存儲落盤在30分鐘內完成。
而在落盤的過程中,需要存儲團隊通過技術將磁盤的讀寫能力開放到極致。
“壓力其實是挺大的,因為你中間一旦有什么問題,風險還是很高的?!?/p>
而在之后,這樣情況也并不只是在春節(jié)的時候發(fā)生,無論是哪家公司籌謀的活動,大家都會來微信朋友圈來“曬”。
“很多時候,友商活動策劃做的是否完美,我們可以‘檢驗’的,而檢驗的依據就是某一時間段節(jié)點給騰訊存儲帶來的壓力。因為微信的業(yè)務太大了,一個活動產生了爆點,就會額外給我們存儲帶來很大的壓力,因為用戶所有分享在朋友圈的圖片和內容最終是要存儲在我們數據中心的?!?/p>
得益于2014年春節(jié)期間的經歷,騰訊存儲團隊在春節(jié)過后就開始針對這些“爆點”制定了柔性策略。
2015年春節(jié),微信與央視合作,為觀看春晚的微信用戶發(fā)紅包,也讓微信的用戶量快速增長,除夕凌晨零點的朋友圈等存儲場景也達到了數十倍的增長。
2016年騰訊存儲團隊春節(jié)值班零點后留影
“微信是一個要出海的業(yè)務,出海其實給我們帶來了很多挑戰(zhàn)?!?/p>
說這句話的是現任騰訊云架構平臺部系統(tǒng)研發(fā)中心總監(jiān)郭振宇:“微信出海是有一些競爭對手,特別是在東南亞有LINE,還有WhatApp,東南亞的人和自己國內人進行數據溝通的鏈路很長?!?/p>
顯然,這是不利于微信搶占海外市場的。
作為公司業(yè)務的支持方,我們在存儲上面要配合微信團隊做更定制化的服務,因為微信也是騰訊重要戰(zhàn)略業(yè)務,所以當時我們團隊為微信做了很多存儲相關的業(yè)務系統(tǒng)。
郭振宇接著說:“比如怎么樣讓圖片傳輸更快,我們在全國建立了很多接入點,用戶數據只需要傳到最近的地方,國外只傳到國外數據中心,內地也只需傳到內地數據中心?!?/p>
而這一切,其實對于存儲團隊來說,都不再是什么難題。
云計算的發(fā)展,讓很多廠商都瞄向了To B的生意,騰訊云亦是如此,但這又何其容易?
集團層要制定大的戰(zhàn)略,事業(yè)部要具有To B的思維,技術上也需要具有To B 的意識。
但騰訊的存儲部門卻在此走了一次“彎路”。
騰訊云副總裁、云架構平臺部總經理謝明
“說到騰訊云,其實在2012年騰訊開放平臺就已經開始做云了,但是開放平臺跟現在的騰訊云并不一樣,開放平臺時候,我們和合作伙伴對接時我們是資源方,因為你要用QQ、QQ空間的資源。但是到后來騰訊云做To B服務的時候,這時候要靠自己的實力去證明我們是專業(yè)的?!敝x明如是說。
此時,支持騰訊自己業(yè)務的TFS存儲系統(tǒng)等,已經成熟且穩(wěn)定。在騰訊看來,將TFS存儲系統(tǒng)進行一次產品包裝后也能服務好外部第三方業(yè)務。
谷歌其實就是這么做的,目前,Google的云存儲產品GCS建立在ColossusV2的根基上。ColossusV2是典型的元數據Federation架構的分布式文件存儲系統(tǒng),說白了ColossusV2就是Google由GFS存儲系統(tǒng)改進優(yōu)化而來的。
“但Google的GFS存儲系統(tǒng)是誕生于云計算興起之前?!爆F任云架構平臺部存儲研發(fā)中心總監(jiān)楊奮強接著說:
那時候扁平式的對象存儲場景不像今天這樣豐富清晰,所以分布式文件系統(tǒng)管理的單位是文件,過多過小的文件會導致元數據管理爆炸,所以主要面向幾十M的大文件,這樣一個百字節(jié)的元數據可以管理幾十M的大文件,元數據單字節(jié)管理效率大概百K級別,冗余的目錄樹顯然對對象存儲場景是多余而且低效的。
而此時,又有幾個問題擺在了騰訊云存儲產品團隊和存儲技術團隊面前:
云計算迅猛發(fā)展,行業(yè)競爭的日益激烈,客戶可選擇面較大,對功能、性能、質量、價格等方面的需求不斷增強;
從自身現狀來說,數據量的不斷增大,隨之帶來軟硬件成本、運維成本、優(yōu)化成本的日趨增大;
行業(yè)下游的基礎設施,如大型數據中心、新機型、新硬件、各種存儲介質、網絡環(huán)境的不斷發(fā)展演進。
在這個形勢下,2017年,騰訊存儲部門決定要做一個新的存儲系統(tǒng),一個更適合云計算的Blob存儲系統(tǒng)。
“開始我們想的名字是BlobStorage?!?/p>
楊奮強笑著對雷鋒網說:“Blob的意思是一大塊連續(xù)的二進制數據,像一個視頻文件就是一個Blob數據,Storage的意思是存儲空間?!?/p>
顯然,這完全是大家印象中程序員的“正常操作”,但沒有獲得謝明的贊同。
最終存儲系統(tǒng)的名字被確定為「YottaStore」。
“我們是做存儲的,每天打交道的詞匯比如說GB、TB、PB、EB、ZB,而在ZB上面是YB,也就是YottaByte,目前全世界所有的數據加起來也不超過一個Yotta。”楊奮強接著說。
“另外這個單詞又朗朗上口,中文譯名‘有他’,給人安全可靠放心的感覺,我們在內部的分享課程,就是‘存儲有他,能力無限’?!?/p>
而這個名字,也代表了騰訊存儲部門的野心,這個存儲系統(tǒng)的理論峰值是YB。
“我們現在一個集群可以存儲1ZB的數據,如果是1000個這樣的集群,那我們就可以存儲一個YB的數據。”楊奮強很自信的說。
回到重做一個存儲系統(tǒng)的問題上,為何騰訊會做出這樣一個決定?
“我們當年將內部業(yè)務上云的時候,TFS系統(tǒng)支撐我們內部業(yè)務的海量數據都是沒問題的,支持外部業(yè)務當然也沒有問題,但我們要把目光放到十年以后?!敝x明如是說。
但事實上,重新自研一個存儲系統(tǒng)不是一件容易的事情。
再以谷歌為例,為什么谷歌不做一個適合于GCS的云上的Blob存儲系統(tǒng)?其實Google也深諳ColossusV2的問題,在幾年前,谷歌就組建了一個二三十人團隊去做這件事,但最終卻不了了之。
由于業(yè)務驅動著技術的變革,騰訊選擇了Google沒有成功的那條道路,YottaStore在2018年開始了研發(fā),并于2019年正式上線。
“YottaStore,我一直說它是一個云數據存儲系統(tǒng),這跟當前業(yè)界絕大多數公司的做法是完全不同的,它的優(yōu)勢也是很明顯的?!?/p>
楊奮強介紹說:“YottaStore的極限是一個集群可以管理超上千萬臺服務器,而要管理這上千萬臺的機器,我們原數據管理只需要用600G左右的空間,用一臺機器就能存下所有的索引結構,管理上千萬臺的存儲節(jié)點服務器,這在業(yè)界是絕無僅有的?!?/p>
此外,楊奮強表示,YottaStore一個集群可以同時支持各種不同的冗余模式、任意的EC編碼,同時,集群可以自適應各種各樣不同的機型;對于存儲節(jié)點的升級,無論集群規(guī)模多大,YottaStore都可以在20分鐘內完成一個集群的升級。
更令騰訊存儲團隊驕傲的是,YottaStore開始上線大規(guī)模支撐業(yè)務的前三個月一直維持百分之百的可用性,而目前系統(tǒng)仍實現單人值周零故障運行。
“YottaStore存儲系統(tǒng)上線之后,一反通常系統(tǒng)上線后的緊張忙碌的狀態(tài)。就在系統(tǒng)上線的第二天,我們研發(fā)團隊懷著無比輕松的心情去吃了一頓人均500多的自助餐,來犒勞自己。”
楊奮強笑著對雷鋒網說道。
用戶最為直觀感受的就是,基于YottaStore存儲的騰訊云COS存儲的最低價格為1分錢/GB/月,而其數據持久性達到了99.999999999%(11個9)以上。
YottaStore上線后即獲得了騰訊公司級的業(yè)務突破獎。
而如今,基于YottaStore存儲系統(tǒng)的騰訊云對象存儲COS平臺,正在為快手、OPPO、小紅書、???、獵豹、58同城等幾十多萬個企業(yè)客戶提供了可靠的存儲服務,整體數據量高達EB級別。
從各種渠道的信息來看,關于騰訊這支存儲團隊的報道少之又少,但其實在內部,這支團隊被稱之為騰訊的“黃埔軍?!薄?/p>
現任騰訊云架構平臺部研發(fā)中心總監(jiān)朱建平也曾是這其中的一員。
“存儲部門走出了很多人去負責很多其它方向的技術研發(fā)。比如做FPGA異構加速的,做醫(yī)療AI,做視頻編解碼,同時還從這個團隊里面不斷孵化出創(chuàng)新業(yè)務?!?/p>
朱建平接著說:“我們內部說存儲部門是專家的搖籃,分布式存儲平臺,系統(tǒng)設計也好,還是運營等各個維度,面臨的問題比較多,存儲部門特別能鍛煉人,所以過往一般都是最好的畢業(yè)生放進來,然后這邊能力成熟了以后,慢慢又分流到其他戰(zhàn)場去。”
據雷鋒網了解,目前騰訊AI、服務器、運管、研效、搜索、CDN、視頻編碼等很多領域的帶頭人都是從存儲團隊出來的。
而也正是這樣的一個團隊,在為騰訊默默筑建著技術的根基。
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。