鵝廠存儲往事

小棗君
以存儲節(jié)點迭代升級為例,十萬百萬規(guī)模的一個集群,上線升級速度都是一樣的。如果是同構(gòu)的數(shù)據(jù)格式,分鐘級就可以完成整個升級過程。如果是異構(gòu)的數(shù)據(jù)格式,集群可以在短時間內(nèi)自動將數(shù)據(jù)格式透明收斂到最新版。

QZone告急,臨危受命

2005年,是中國第二次互聯(lián)網(wǎng)浪潮的發(fā)始之年。剛剛從破碎泡沫中走出的互聯(lián)網(wǎng)產(chǎn)業(yè),逐漸迎來了“web 2.0”時代。

這個時代的特征,就是去中心化、開放和共享。

越來越多的互聯(lián)網(wǎng)用戶,開始以興趣為聚合點,組成社群,分享生活,發(fā)表觀點。他們積極參與話題討論,渴望獲得關(guān)注和認同。

在這樣的背景下,社交網(wǎng)絡(luò)應(yīng)用開始迅速崛起。最具代表性的,就是騰訊推出的QQ空間(QZone)。

QQ空間,作為“展示自我和與他人互動的平臺”,推出之后獲得了極好的反饋,用戶數(shù)量快速增長,平臺活躍度不斷攀升。

根據(jù)當時的數(shù)據(jù)統(tǒng)計,QQ空間上線的3個季度,注冊用戶數(shù)就突破了5000萬,月活躍用戶數(shù)約2300萬,日訪問人數(shù)超過1300萬。

用戶數(shù)量的增長,意味著內(nèi)容的增長。當時,用戶在QQ空間上傳的海量圖片、文件、頭像等UGC數(shù)據(jù),對騰訊的存儲能力提出了巨大的考驗。

當時的騰訊,并沒有統(tǒng)一的存儲產(chǎn)品和技術(shù)平臺,各個業(yè)務(wù)部門都是自建存儲系統(tǒng),自給自足。

這種方式,對于QQ空間這種爆款產(chǎn)品來說,顯然是無法滿足要求。它帶來的直接后果就是,空間開啟速度越來越慢,用戶體驗越來越差,投訴也越來越多。

當時,業(yè)務(wù)團隊購買存儲服務(wù)器的速度,根本趕不上用戶增長的速度。

最典型的例子,就是那時候QQ空間只允許所有用戶每天上傳800萬張圖片,只有黃鉆用戶才可以無限上傳。

與此同時,競爭對手窺覷QQ空間的業(yè)務(wù)增長,很快推出了相應(yīng)的競品,意圖趁機搶奪用戶。

內(nèi)憂外患之下,一支新成立的年輕團隊站了出來,勇挑重擔(dān)。

這個團隊,就是后來被譽為騰訊公司內(nèi)部“黃埔軍校”的存儲技術(shù)團隊。團隊的首任組長,就是現(xiàn)在的集團副總裁姚星。

團隊成立之后的首要任務(wù),就是解決QQ空間發(fā)展所帶來的存儲瓶頸問題。

當時,面對海量數(shù)據(jù)存儲的難題,不僅是國內(nèi),就連海外也沒有什么可供參考的成熟經(jīng)驗。唯一可供存儲技術(shù)團隊借鑒的,就是此前谷歌公司發(fā)表的那幾篇關(guān)于BigTable、GFS和MapReduce的論文。

如果稍微了解一點大數(shù)據(jù)知識,就會知道,這幾篇論文是海量數(shù)據(jù)存儲技術(shù)的經(jīng)典之作。谷歌作為一家搜索引擎公司,當時的主要目的,是從昂貴的企業(yè)級存儲轉(zhuǎn)向大規(guī)模廉價分布式存儲,以更低的成本,滿足搜索引擎業(yè)務(wù)的需求。

這個目的,顯然和騰訊存儲技術(shù)團隊是一致的。

借鑒經(jīng)驗之后,也是團隊成立的第二年,他們就上線了自主研發(fā)的TFS存儲系統(tǒng),全面接管了QQ空間的相冊業(yè)務(wù)。

TFS系統(tǒng)上線之后,雖然緩解了業(yè)務(wù)部門的存儲壓力,但并沒有徹底解決問題。當時,系統(tǒng)仍然會出現(xiàn)比較高的延遲,影響用戶的體驗。

高延時的原因,主要是因為相冊業(yè)務(wù)和搜索引擎業(yè)務(wù)之間存在區(qū)別。相冊業(yè)務(wù)中,圖片的數(shù)據(jù)體量更小,索引密集度更高,所以難度更大,完全照搬搜索引擎模式并不可行。

于是,存儲技術(shù)團隊在TFS系統(tǒng)基礎(chǔ)上進行持續(xù)改進,推出了適合不同圖片存儲場景的系統(tǒng)。其中包括支持實時回收的CTFS系統(tǒng)、基于HDD的鍵值對TDB存儲平臺等。

終于,在持續(xù)的改進下,存儲技術(shù)團隊徹底解決了QQ空間的存儲瓶頸問題。

2009年,QQ空間成為排在網(wǎng)絡(luò)游戲之后的騰訊第二大收入貢獻部門,并且獲得了該年度的騰訊合作文化獎。

這個成績的背后,存儲技術(shù)團隊功不可沒。

QQ截圖20200828092910.png

2009年騰訊存儲技術(shù)團隊合影

2009年,SNS游戲QQ農(nóng)場正式推出,掀起了全民偷菜的熱潮。當時,農(nóng)場的訪問量巨大,在每秒數(shù)萬的并發(fā)訪問下,騰訊的底層存儲系統(tǒng)的延時和請求吞吐壓力非常大,服務(wù)器數(shù)度崩潰。

當時的騰訊,基本上把公司所有閑置服務(wù)器都用在QQ農(nóng)場上,但仍遠遠不夠,需要大量采購服務(wù)器。

存儲技術(shù)團隊一方面瘋狂擴容設(shè)備,另一方面基于數(shù)據(jù)規(guī)模不太大但是訪問量極高的業(yè)務(wù)特點,快速研發(fā)了全內(nèi)存的分布式存儲系統(tǒng)。在保障數(shù)據(jù)安全可靠的前提下,系統(tǒng)的并發(fā)訪問性能得到極大提升。

快速上線、快速驗證、完全自研,存儲技術(shù)團隊“hold”住了局面,再立大功。

一波漸平,一波又起

第一階段使命的完成,使得存儲技術(shù)團隊積累了豐富的經(jīng)驗。團隊成員的架構(gòu)設(shè)計能力和開發(fā)能力也得到了充分的鍛煉。

很快,他們又迎來了一項新的挑戰(zhàn)。這次遇到的,是帶寬問題。

2011年,在QQ相冊等大體量業(yè)務(wù)快速增長的刺激下,騰訊的數(shù)據(jù)存儲量達到了50PB。

這是一個標志性的事件。

當時,騰訊所有的數(shù)據(jù)中心都在深圳。那時候骨干網(wǎng)絡(luò)的帶寬很小,QQ相冊高峰時占用40-50Gbps,而1G的流量對公司的網(wǎng)絡(luò)就已經(jīng)是很大的負擔(dān)了。

于是,騰訊必須將海量的業(yè)務(wù)數(shù)據(jù)分散到全國各地,緩解訪問帶寬的壓力,同時降低成本。

存儲平臺當時啟動了相冊一通點等項目,海量業(yè)務(wù)數(shù)據(jù)開始從深圳向西安、杭州、廣州、上海等地數(shù)據(jù)遷移,訪問帶寬也同時調(diào)度到天津、南京、東莞等成本更低的一通機房。

當時存儲技術(shù)團隊搬遷的第一臺設(shè)備,數(shù)據(jù)量是100TB。在現(xiàn)在看來,100TB并不是很大,但是當時已經(jīng)是騰訊有史以來最大的一次數(shù)據(jù)搬遷了。

更讓人意料之外的是,存儲團隊搬遷這些數(shù)據(jù)的方法,并不是通過專線(因為怕影響公司正常業(yè)務(wù)),而是通過后半夜閑時的公網(wǎng)出口。他們采用螞蟻搬家式的數(shù)據(jù)遷移方法,一點一點把數(shù)據(jù)拷貝到異地數(shù)據(jù)中心。

后來,隨著數(shù)據(jù)遷移工作的逐步完成,騰訊存儲網(wǎng)絡(luò)的帶寬壓力明顯緩解,成本也得到了有效控制。

到了2015年左右,騰訊存儲技術(shù)團隊又迎來了一個新的問題——數(shù)據(jù)太多了。

那時候,騰訊的數(shù)據(jù)總量逐漸到了500PB的量級。隨著時間的推移,此前用戶上傳的大量數(shù)據(jù),都成了冷數(shù)據(jù)。所謂冷數(shù)據(jù),就是很少去讀取的數(shù)據(jù)。

這些冷數(shù)據(jù)占用了大量的存儲空間,為了容災(zāi),還進行多重備份,更加消耗資源。

于是,存儲技術(shù)團隊就開始做分級存儲。他們優(yōu)化了系統(tǒng)的分布式存儲架構(gòu),研發(fā)BTFS平臺,把數(shù)據(jù)從三副本降到1.33份的糾刪存儲。他們將QQ相冊、微云,郵件附件等產(chǎn)品中的歷史數(shù)據(jù)放到BTFS里面去,以此來降低存儲成本。

除此之外,他們還在數(shù)據(jù)訪問量不大的存儲服務(wù)器上做虛擬化,利用空閑的CPU資源跑計算負載,例如圖片的編解碼等,充分提升資源的利用率。

微信崛起,存儲助力

在QQ空間之后,騰訊TFS系統(tǒng)逐漸開始為QQ、郵箱、微云等提供存儲服務(wù),成為整個騰訊的基礎(chǔ)數(shù)據(jù)存儲平臺。

2013年,騰訊正式發(fā)布了微信,開啟了新一輪的移動社交網(wǎng)絡(luò)大戰(zhàn)。微信的數(shù)據(jù)存儲需求,同樣依賴于TFS系統(tǒng)。

QQ截圖20200828092910.png

用戶使用微信,除了文字之外,還會發(fā)送海量的圖片、音頻、視頻,甚至紅包。這些操作全部離不開對存儲系統(tǒng)的讀寫。發(fā)朋友圈也是一樣,背后離不開存儲系統(tǒng)的支持。

2014年的春節(jié),用戶數(shù)快速增長的微信,以及它背后的TFS,迎來了一場載入中國互聯(lián)網(wǎng)發(fā)展史冊的大考——有史以來第一次的紅包大戰(zhàn)。這場大戰(zhàn)當時有800萬用戶參與,業(yè)務(wù)團隊和存儲技術(shù)團隊感受到了前所未有的壓力。

壓力最大的時刻,就是大年三十晚上12點那個時間段,數(shù)以億計的用戶會發(fā)送祝福,造成井噴級的高并發(fā)數(shù)據(jù)讀寫需求。如果系統(tǒng)能力不足以應(yīng)對,就會全面崩潰,影響用戶體驗,損害騰訊和微信在用戶心中的形象,失去用戶的信賴。

為了應(yīng)對這種情況,存儲技術(shù)團隊對系統(tǒng)進行了能力深度挖潛,竭盡全力將磁盤的讀寫能力開發(fā)到極致。與此同時,他們聯(lián)合微信團隊制定了各種柔性策略,開發(fā)了很多定制化的服務(wù),也專門開發(fā)了服務(wù)于微信業(yè)務(wù)的系統(tǒng)。最終,他們承受住了考驗,涉險過關(guān)。

后來,到了2015年春節(jié),微信月活躍用戶達到5億,激烈的紅包大戰(zhàn)再次打響。這次,積累了豐富經(jīng)驗的存儲技術(shù)團隊胸有成竹,交上了更完美的答卷。

業(yè)務(wù)開放,發(fā)力B端

隨著騰訊存儲系統(tǒng)的不斷成熟,加之2012年之后逐漸開始的云計算趨勢,騰訊開始考慮將TFS存儲業(yè)務(wù)面向外部開放,服務(wù)第三方業(yè)務(wù),爭奪B端企業(yè)用戶市場。

初期騰訊云基于已有的存儲訪問接口和平臺架構(gòu)對外提供服務(wù)。經(jīng)過一段時間的運營,騰訊云發(fā)現(xiàn)外部第三方業(yè)務(wù)在體驗、可用性、成本等諸多運營方面有極高的要求。

因此,為支撐云的需求場景,騰訊云對存儲的接入層和索引層架構(gòu)進行重構(gòu),架構(gòu)扁平,模塊精簡。同時,騰訊云存儲開始舍棄私有接口,轉(zhuǎn)為兼容AWS S3接口與功能。

重構(gòu)后,存儲架構(gòu)的開放能力得到了進一步提升,支撐了騰訊云COS(Cloud Object Storage)業(yè)務(wù)近幾年的發(fā)展。

在騰訊看來,對云的理解是不斷加深的過程。他們認識到,僅有不錯的存儲平臺并不夠,必須深入研究各個行業(yè)的需求場景,提供功能、性能、質(zhì)量和價格要求不同的服務(wù),才能夠獲得用戶的認可。

Yotta問世,無限賦能

2017年,騰訊云的數(shù)據(jù)量突破一個EB,成為騰訊存儲歷史上的一個標志性節(jié)點。

為了應(yīng)對未來云計算業(yè)務(wù)的挑戰(zhàn),騰訊存儲團隊開始了一個宏大的計劃——啟動全新的存儲架構(gòu)平臺YottaStore的開發(fā)。

最開始的時候,存儲團隊內(nèi)部打算給新平臺取名為BlobStorage。Blob的意思是一大塊連續(xù)的二進制數(shù)據(jù),像一個視頻文件就是一個Blob數(shù)據(jù)。

顯然,這是大家印象中程序員的”正常操作”,但最終這個名字被確定為YottaStore。

對于做存儲的同學(xué)來說,經(jīng)常會跟GB、TB、PB、EB這些概念打交道?,F(xiàn)在全球互聯(lián)網(wǎng)巨頭公司的數(shù)據(jù)量基本都是在EB這個量級。EB上面是ZB,全球互聯(lián)網(wǎng)巨頭數(shù)據(jù)加起來也就幾個ZB。ZB再往上,就是YB,也就是YottaByte。目前全世界所有的數(shù)據(jù)加起來,也不超過一個YottaByte。

毫無疑問,這個名字體現(xiàn)了騰訊對這個系統(tǒng)的期待,寄予了厚望。

除了足夠大之外,Yotta的中文譯名是“有他”,可以給人安全可靠放心的感覺。在騰訊內(nèi)部,就有“存儲有他,能力無限”的說法。

YottaStore從2018年開始啟動研發(fā),2019年正式上線,完全由騰訊自主研發(fā)完成。上線同年,就獲得了公司級的業(yè)務(wù)突破獎。

作為一個云存儲系統(tǒng),YottaStore的能力可以說是非常強悍:

集群規(guī)模

YottaStore是一個云原生的數(shù)據(jù)存儲系統(tǒng),這個系統(tǒng)的理論極限是一個集群可以管理超上千萬臺服務(wù)器。而要管理這上千萬臺的機器,元數(shù)據(jù)管理只需要用600G左右的空間,僅用一臺機器就能存下索引結(jié)構(gòu),這在業(yè)界絕無僅有。

資源利用率

當集群規(guī)模非常大的時候,1%的剩余空間量都非常大。所以,YottaStore將硬盤利用率提升到很高的水平,配合實時回收機制,有效數(shù)據(jù)占比達90%以上。這在業(yè)界非常少見。

另外,由于大集群的全集群均衡能力,服務(wù)器資源使用均衡,所以資源使用率也可以做得很高。服務(wù)器硬件可以最低位配置,所有尖峰流量在這個超大的池子里,波瀾不驚。

所以,無論是成本,還是服務(wù)能力,都很大程度受益于超大規(guī)模集群帶來的紅利。

靈活性

YottaStore單集群可以零研發(fā)成本同時支持各種不同的冗余模式,像兩副本、三副本、四副本、五副本,任意的EC編碼,任意的M、加任意的N、任意的算法;單AZ、雙AZ、多AZ,也都可以靈活支持。

另外,整個集群可以自適應(yīng)各種各樣不同的機型,包括JBOD;各種硬盤介質(zhì),如磁帶、HDD、SSD等,存儲的拓撲結(jié)構(gòu)、混合部署也都可以任意指定。

這樣的靈活性在業(yè)界首屈一指。

運營能力

以存儲節(jié)點迭代升級為例,十萬百萬規(guī)模的一個集群,上線升級速度都是一樣的。如果是同構(gòu)的數(shù)據(jù)格式,分鐘級就可以完成整個升級過程。如果是異構(gòu)的數(shù)據(jù)格式,集群可以在短時間內(nèi)自動將數(shù)據(jù)格式透明收斂到最新版。

可用性

可用性達到“數(shù)個9”很容易,但是達到100%非常難。例如機房網(wǎng)絡(luò)抖動,如果容錯做的不夠好,就很容易出現(xiàn)失敗。

YottaStore開始上線大規(guī)模支撐業(yè)務(wù)的前三個月,一直維持100%的可用性。到現(xiàn)在一年半了,系統(tǒng)一直單人值周零故障運行,在業(yè)界是極少見的。

成本控制

基于前文所述的在超大規(guī)模集群和超高資源利用率上的技術(shù)突破,隨著資源利用率的增高,YottaStore的單位存儲成本不斷降低。

磁盤容量擴大,單機磁盤數(shù)變多,密度增高,成本也隨之降低。此外,CPU、網(wǎng)卡等新硬件的變化都會導(dǎo)致成本降低。

針對海量小文件的用戶場景,YottaStore采用多種冗余和數(shù)據(jù)組織策略持續(xù)優(yōu)化成本。

綜上所述,YottaStore是一個擁有強大能力的超級存儲架構(gòu)平臺。目前,YottaStore已經(jīng)全面上線并支撐騰訊內(nèi)外部的存儲業(yè)務(wù),運行質(zhì)量遠超SLA。

基于YottaStore存儲系統(tǒng)的騰訊云對象存儲COS平臺,正在為快手、OPPO、小紅書、???、獵豹、58同城等幾十多萬個企業(yè)客戶提供可靠的存儲服務(wù),整體數(shù)據(jù)量高達EB級別。

結(jié)語

回顧騰訊存儲技術(shù)的整個發(fā)展歷程,不由令人心生感慨。

15年前,騰訊存儲團隊成立的時候,一定不曾想到,自己會走過這么蜿蜒曲折的發(fā)展之路。

他們不會想到,自己所在的公司會推出比QQ空間更爆款的產(chǎn)品,自己會面對更嚴峻的考驗。

他們不會想到,自己的使命,從服務(wù)內(nèi)部,到服務(wù)外部,從服務(wù)C端,到服務(wù)B端,不斷轉(zhuǎn)變。

他們不會想到,自己開發(fā)的存儲系統(tǒng),數(shù)據(jù)體量規(guī)模竟然會從PB到EB,覆蓋全球范圍內(nèi)30多個region,擁有上萬臺服務(wù)器。

他們不會想到,自己所在的團隊,會成為整個公司的“黃埔”軍校,走出了無數(shù)的技術(shù)專家和管理干部。

時代就是這樣,前進的步伐太快,永遠超出常人的想象。

能夠擁有這樣的成績并非偶然。成績的背后,既離不開他們對用戶需求的精準把握,也離不開對產(chǎn)品性能的極致挖潛,更離不開對技術(shù)夢想的執(zhí)著追求。

存儲的戰(zhàn)爭還沒有結(jié)束,只是進入了一個新的階段。

未來,有新的挑戰(zhàn)在等待著他們。也有新的機遇,在召喚著他們。再過15年,又會發(fā)生什么樣的故事?不如讓時間來告訴我們答案吧。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論