聊一聊吧鵝廠存儲(chǔ)往事
本文轉(zhuǎn)載自微信公眾號(hào)「鮮棗課堂」,作者小棗君 。轉(zhuǎn)載本文請(qǐng)聯(lián)系鮮棗課堂公眾號(hào)。
QZone告急,臨危受命
2005年,是中國第二次互聯(lián)網(wǎng)浪潮的發(fā)始之年。剛剛從破碎泡沫中走出的互聯(lián)網(wǎng)產(chǎn)業(yè),逐漸迎來了“web 2.0”時(shí)代。
這個(gè)時(shí)代的特征,就是去中心化、開放和共享。
越來越多的互聯(lián)網(wǎng)用戶,開始以興趣為聚合點(diǎn),組成社群,分享生活,發(fā)表觀點(diǎn)。他們積極參與話題討論,渴望獲得關(guān)注和認(rèn)同。
在這樣的背景下,社交網(wǎng)絡(luò)應(yīng)用開始迅速崛起。最具代表性的,就是騰訊推出的QQ空間(QZone)。
QQ空間,作為“展示自我和與他人互動(dòng)的平臺(tái)”,推出之后獲得了極好的反饋,用戶數(shù)量快速增長,平臺(tái)活躍度不斷攀升。
根據(jù)當(dāng)時(shí)的數(shù)據(jù)統(tǒng)計(jì),QQ空間上線的3個(gè)季度,注冊(cè)用戶數(shù)就突破了5000萬,月活躍用戶數(shù)約2300萬,日訪問人數(shù)超過1300萬。
用戶數(shù)量的增長,意味著內(nèi)容的增長。當(dāng)時(shí),用戶在QQ空間上傳的海量圖片、文件、頭像等UGC數(shù)據(jù),對(duì)騰訊的存儲(chǔ)能力提出了巨大的考驗(yàn)。
當(dāng)時(shí)的騰訊,并沒有統(tǒng)一的存儲(chǔ)產(chǎn)品和技術(shù)平臺(tái),各個(gè)業(yè)務(wù)部門都是自建存儲(chǔ)系統(tǒng),自給自足。
這種方式,對(duì)于QQ空間這種爆款產(chǎn)品來說,顯然是無法滿足要求。它帶來的直接后果就是,空間開啟速度越來越慢,用戶體驗(yàn)越來越差,投訴也越來越多。
當(dāng)時(shí),業(yè)務(wù)團(tuán)隊(duì)購買存儲(chǔ)服務(wù)器的速度,根本趕不上用戶增長的速度。
最典型的例子,就是那時(shí)候QQ空間只允許所有用戶每天上傳800萬張圖片,只有黃鉆用戶才可以無限上傳。
與此同時(shí),競爭對(duì)手窺覷QQ空間的業(yè)務(wù)增長,很快推出了相應(yīng)的競品,意圖趁機(jī)搶奪用戶。
內(nèi)憂外患之下,一支新成立的年輕團(tuán)隊(duì)站了出來,勇挑重?fù)?dān)。
這個(gè)團(tuán)隊(duì),就是后來被譽(yù)為騰訊公司內(nèi)部“黃埔軍校”的存儲(chǔ)技術(shù)團(tuán)隊(duì)。團(tuán)隊(duì)的首任組長,就是現(xiàn)在的集團(tuán)副總裁姚星。
團(tuán)隊(duì)成立之后的首要任務(wù),就是解決QQ空間發(fā)展所帶來的存儲(chǔ)瓶頸問題。
當(dāng)時(shí),面對(duì)海量數(shù)據(jù)存儲(chǔ)的難題,不僅是國內(nèi),就連海外也沒有什么可供參考的成熟經(jīng)驗(yàn)。唯一可供存儲(chǔ)技術(shù)團(tuán)隊(duì)借鑒的,就是此前谷歌公司發(fā)表的那幾篇關(guān)于BigTable、GFS和MapReduce的論文。
如果稍微了解一點(diǎn)大數(shù)據(jù)知識(shí),就會(huì)知道,這幾篇論文是海量數(shù)據(jù)存儲(chǔ)技術(shù)的經(jīng)典之作。谷歌作為一家搜索引擎公司,當(dāng)時(shí)的主要目的,是從昂貴的企業(yè)級(jí)存儲(chǔ)轉(zhuǎn)向大規(guī)模廉價(jià)分布式存儲(chǔ),以更低的成本,滿足搜索引擎業(yè)務(wù)的需求。
這個(gè)目的,顯然和騰訊存儲(chǔ)技術(shù)團(tuán)隊(duì)是一致的。
借鑒經(jīng)驗(yàn)之后,也是團(tuán)隊(duì)成立的第二年,他們就上線了自主研發(fā)的TFS存儲(chǔ)系統(tǒng),全面接管了QQ空間的相冊(cè)業(yè)務(wù)。
TFS系統(tǒng)上線之后,雖然緩解了業(yè)務(wù)部門的存儲(chǔ)壓力,但并沒有徹底解決問題。當(dāng)時(shí),系統(tǒng)仍然會(huì)出現(xiàn)比較高的延遲,影響用戶的體驗(yàn)。
高延時(shí)的原因,主要是因?yàn)橄鄡?cè)業(yè)務(wù)和搜索引擎業(yè)務(wù)之間存在區(qū)別。相冊(cè)業(yè)務(wù)中,圖片的數(shù)據(jù)體量更小,索引密集度更高,所以難度更大,完全照搬搜索引擎模式并不可行。
于是,存儲(chǔ)技術(shù)團(tuán)隊(duì)在TFS系統(tǒng)基礎(chǔ)上進(jìn)行持續(xù)改進(jìn),推出了適合不同圖片存儲(chǔ)場景的系統(tǒng)。其中包括支持實(shí)時(shí)回收的CTFS系統(tǒng)、基于HDD的鍵值對(duì)TDB存儲(chǔ)平臺(tái)等。
終于,在持續(xù)的改進(jìn)下,存儲(chǔ)技術(shù)團(tuán)隊(duì)徹底解決了QQ空間的存儲(chǔ)瓶頸問題。
2009年,QQ空間成為排在網(wǎng)絡(luò)游戲之后的騰訊第二大收入貢獻(xiàn)部門,并且獲得了該年度的騰訊合作文化獎(jiǎng)。
這個(gè)成績的背后,存儲(chǔ)技術(shù)團(tuán)隊(duì)功不可沒。
2009年騰訊存儲(chǔ)技術(shù)團(tuán)隊(duì)合影
2009年,SNS游戲QQ農(nóng)場正式推出,掀起了全民偷菜的熱潮。當(dāng)時(shí),農(nóng)場的訪問量巨大,在每秒數(shù)萬的并發(fā)訪問下,騰訊的底層存儲(chǔ)系統(tǒng)的延時(shí)和請(qǐng)求吞吐壓力非常大,服務(wù)器數(shù)度崩潰。
當(dāng)時(shí)的騰訊,基本上把公司所有閑置服務(wù)器都用在QQ農(nóng)場上,但仍遠(yuǎn)遠(yuǎn)不夠,需要大量采購服務(wù)器。
存儲(chǔ)技術(shù)團(tuán)隊(duì)一方面瘋狂擴(kuò)容設(shè)備,另一方面基于數(shù)據(jù)規(guī)模不太大但是訪問量極高的業(yè)務(wù)特點(diǎn),快速研發(fā)了全內(nèi)存的分布式存儲(chǔ)系統(tǒng)。在保障數(shù)據(jù)安全可靠的前提下,系統(tǒng)的并發(fā)訪問性能得到極大提升。
快速上線、快速驗(yàn)證、完全自研,存儲(chǔ)技術(shù)團(tuán)隊(duì)“hold”住了局面,再立大功。
一波漸平,一波又起
第一階段使命的完成,使得存儲(chǔ)技術(shù)團(tuán)隊(duì)積累了豐富的經(jīng)驗(yàn)。團(tuán)隊(duì)成員的架構(gòu)設(shè)計(jì)能力和開發(fā)能力也得到了充分的鍛煉。
很快,他們又迎來了一項(xiàng)新的挑戰(zhàn)。這次遇到的,是帶寬問題。
2011年,在QQ相冊(cè)等大體量業(yè)務(wù)快速增長的刺激下,騰訊的數(shù)據(jù)存儲(chǔ)量達(dá)到了50PB。
這是一個(gè)標(biāo)志性的事件。
當(dāng)時(shí),騰訊所有的數(shù)據(jù)中心都在深圳。那時(shí)候骨干網(wǎng)絡(luò)的帶寬很小,QQ相冊(cè)高峰時(shí)占用40-50Gbps,而1G的流量對(duì)公司的網(wǎng)絡(luò)就已經(jīng)是很大的負(fù)擔(dān)了。
于是,騰訊必須將海量的業(yè)務(wù)數(shù)據(jù)分散到全國各地,緩解訪問帶寬的壓力,同時(shí)降低成本。
存儲(chǔ)平臺(tái)當(dāng)時(shí)啟動(dòng)了相冊(cè)一通點(diǎn)等項(xiàng)目,海量業(yè)務(wù)數(shù)據(jù)開始從深圳向西安、杭州、廣州、上海等地?cái)?shù)據(jù)遷移,訪問帶寬也同時(shí)調(diào)度到天津、南京、東莞等成本更低的一通機(jī)房。
當(dāng)時(shí)存儲(chǔ)技術(shù)團(tuán)隊(duì)搬遷的第一臺(tái)設(shè)備,數(shù)據(jù)量是100TB。在現(xiàn)在看來,100TB并不是很大,但是當(dāng)時(shí)已經(jīng)是騰訊有史以來最大的一次數(shù)據(jù)搬遷了。
更讓人意料之外的是,存儲(chǔ)團(tuán)隊(duì)搬遷這些數(shù)據(jù)的方法,并不是通過專線(因?yàn)榕掠绊懝菊I(yè)務(wù)),而是通過后半夜閑時(shí)的公網(wǎng)出口。他們采用螞蟻搬家式的數(shù)據(jù)遷移方法,一點(diǎn)一點(diǎn)把數(shù)據(jù)拷貝到異地?cái)?shù)據(jù)中心。
后來,隨著數(shù)據(jù)遷移工作的逐步完成,騰訊存儲(chǔ)網(wǎng)絡(luò)的帶寬壓力明顯緩解,成本也得到了有效控制。
到了2015年左右,騰訊存儲(chǔ)技術(shù)團(tuán)隊(duì)又迎來了一個(gè)新的問題——數(shù)據(jù)太多了。
那時(shí)候,騰訊的數(shù)據(jù)總量逐漸到了500PB的量級(jí)。隨著時(shí)間的推移,此前用戶上傳的大量數(shù)據(jù),都成了冷數(shù)據(jù)。所謂冷數(shù)據(jù),就是很少去讀取的數(shù)據(jù)。
這些冷數(shù)據(jù)占用了大量的存儲(chǔ)空間,為了容災(zāi),還進(jìn)行多重備份,更加消耗資源。
于是,存儲(chǔ)技術(shù)團(tuán)隊(duì)就開始做分級(jí)存儲(chǔ)。他們優(yōu)化了系統(tǒng)的分布式存儲(chǔ)架構(gòu),研發(fā)BTFS平臺(tái),把數(shù)據(jù)從三副本降到1.33份的糾刪存儲(chǔ)。他們將QQ相冊(cè)、微云,郵件附件等產(chǎn)品中的歷史數(shù)據(jù)放到BTFS里面去,以此來降低存儲(chǔ)成本。
除此之外,他們還在數(shù)據(jù)訪問量不大的存儲(chǔ)服務(wù)器上做虛擬化,利用空閑的CPU資源跑計(jì)算負(fù)載,例如圖片的編解碼等,充分提升資源的利用率。
微信崛起,存儲(chǔ)助力
在QQ空間之后,騰訊TFS系統(tǒng)逐漸開始為QQ、郵箱、微云等提供存儲(chǔ)服務(wù),成為整個(gè)騰訊的基礎(chǔ)數(shù)據(jù)存儲(chǔ)平臺(tái)。
2013年,騰訊正式發(fā)布了微信,開啟了新一輪的移動(dòng)社交網(wǎng)絡(luò)大戰(zhàn)。微信的數(shù)據(jù)存儲(chǔ)需求,同樣依賴于TFS系統(tǒng)。
用戶使用微信,除了文字之外,還會(huì)發(fā)送海量的圖片、音頻、視頻,甚至紅包。這些操作全部離不開對(duì)存儲(chǔ)系統(tǒng)的讀寫。發(fā)朋友圈也是一樣,背后離不開存儲(chǔ)系統(tǒng)的支持。
2014年的春節(jié),用戶數(shù)快速增長的微信,以及它背后的TFS,迎來了一場載入中國互聯(lián)網(wǎng)發(fā)展史冊(cè)的大考——有史以來第一次的紅包大戰(zhàn)。這場大戰(zhàn)當(dāng)時(shí)有800萬用戶參與,業(yè)務(wù)團(tuán)隊(duì)和存儲(chǔ)技術(shù)團(tuán)隊(duì)感受到了前所未有的壓力。
壓力最大的時(shí)刻,就是大年三十晚上12點(diǎn)那個(gè)時(shí)間段,數(shù)以億計(jì)的用戶會(huì)發(fā)送祝福,造成井噴級(jí)的高并發(fā)數(shù)據(jù)讀寫需求。如果系統(tǒng)能力不足以應(yīng)對(duì),就會(huì)全面崩潰,影響用戶體驗(yàn),損害騰訊和微信在用戶心中的形象,失去用戶的信賴。
為了應(yīng)對(duì)這種情況,存儲(chǔ)技術(shù)團(tuán)隊(duì)對(duì)系統(tǒng)進(jìn)行了能力深度挖潛,竭盡全力將磁盤的讀寫能力開發(fā)到極致。與此同時(shí),他們聯(lián)合微信團(tuán)隊(duì)制定了各種柔性策略,開發(fā)了很多定制化的服務(wù),也專門開發(fā)了服務(wù)于微信業(yè)務(wù)的系統(tǒng)。最終,他們承受住了考驗(yàn),涉險(xiǎn)過關(guān)。
后來,到了2015年春節(jié),微信月活躍用戶達(dá)到5億,激烈的紅包大戰(zhàn)再次打響。這次,積累了豐富經(jīng)驗(yàn)的存儲(chǔ)技術(shù)團(tuán)隊(duì)胸有成竹,交上了更完美的答卷。
業(yè)務(wù)開放,發(fā)力B端
隨著騰訊存儲(chǔ)系統(tǒng)的不斷成熟,加之2012年之后逐漸開始的云計(jì)算趨勢(shì),騰訊開始考慮將TFS存儲(chǔ)業(yè)務(wù)面向外部開放,服務(wù)第三方業(yè)務(wù),爭奪B端企業(yè)用戶市場。
初期騰訊云基于已有的存儲(chǔ)訪問接口和平臺(tái)架構(gòu)對(duì)外提供服務(wù)。經(jīng)過一段時(shí)間的運(yùn)營,騰訊云發(fā)現(xiàn)外部第三方業(yè)務(wù)在體驗(yàn)、可用性、成本等諸多運(yùn)營方面有極高的要求。
因此,為支撐云的需求場景,騰訊云對(duì)存儲(chǔ)的接入層和索引層架構(gòu)進(jìn)行重構(gòu),架構(gòu)扁平,模塊精簡。同時(shí),騰訊云存儲(chǔ)開始舍棄私有接口,轉(zhuǎn)為兼容AWS S3接口與功能。
重構(gòu)后,存儲(chǔ)架構(gòu)的開放能力得到了進(jìn)一步提升,支撐了騰訊云COS(Cloud Object Storage)業(yè)務(wù)近幾年的發(fā)展。
在騰訊看來,對(duì)云的理解是不斷加深的過程。他們認(rèn)識(shí)到,僅有不錯(cuò)的存儲(chǔ)平臺(tái)并不夠,必須深入研究各個(gè)行業(yè)的需求場景,提供功能、性能、質(zhì)量和價(jià)格要求不同的服務(wù),才能夠獲得用戶的認(rèn)可。
Yotta問世,無限賦能
2017年,騰訊云的數(shù)據(jù)量突破一個(gè)EB,成為騰訊存儲(chǔ)歷史上的一個(gè)標(biāo)志性節(jié)點(diǎn)。
為了應(yīng)對(duì)未來云計(jì)算業(yè)務(wù)的挑戰(zhàn),騰訊存儲(chǔ)團(tuán)隊(duì)開始了一個(gè)宏大的計(jì)劃——啟動(dòng)全新的存儲(chǔ)架構(gòu)平臺(tái)YottaStore的開發(fā)。
最開始的時(shí)候,存儲(chǔ)團(tuán)隊(duì)內(nèi)部打算給新平臺(tái)取名為BlobStorage。Blob的意思是一大塊連續(xù)的二進(jìn)制數(shù)據(jù),像一個(gè)視頻文件就是一個(gè)Blob數(shù)據(jù)。
顯然,這是大家印象中程序員的”正常操作”,但最終這個(gè)名字被確定為YottaStore。
對(duì)于做存儲(chǔ)的同學(xué)來說,經(jīng)常會(huì)跟GB、TB、PB、EB這些概念打交道。現(xiàn)在全球互聯(lián)網(wǎng)巨頭公司的數(shù)據(jù)量基本都是在EB這個(gè)量級(jí)。EB上面是ZB,全球互聯(lián)網(wǎng)巨頭數(shù)據(jù)加起來也就幾個(gè)ZB。ZB再往上,就是YB,也就是YottaByte。目前全世界所有的數(shù)據(jù)加起來,也不超過一個(gè)YottaByte。
毫無疑問,這個(gè)名字體現(xiàn)了騰訊對(duì)這個(gè)系統(tǒng)的期待,寄予了厚望。
除了足夠大之外,Yotta的中文譯名是“有他”,可以給人安全可靠放心的感覺。在騰訊內(nèi)部,就有“存儲(chǔ)有他,能力無限”的說法。
YottaStore從2018年開始啟動(dòng)研發(fā),2019年正式上線,完全由騰訊自主研發(fā)完成。上線同年,就獲得了公司級(jí)的業(yè)務(wù)突破獎(jiǎng)。
作為一個(gè)云存儲(chǔ)系統(tǒng),YottaStore的能力可以說是非常強(qiáng)悍:
- 集群規(guī)模
YottaStore是一個(gè)云原生的數(shù)據(jù)存儲(chǔ)系統(tǒng),這個(gè)系統(tǒng)的理論極限是一個(gè)集群可以管理超上千萬臺(tái)服務(wù)器。而要管理這上千萬臺(tái)的機(jī)器,元數(shù)據(jù)管理只需要用600G左右的空間,僅用一臺(tái)機(jī)器就能存下索引結(jié)構(gòu),這在業(yè)界絕無僅有。
- 資源利用率
當(dāng)集群規(guī)模非常大的時(shí)候,1%的剩余空間量都非常大。所以,YottaStore將硬盤利用率提升到很高的水平,配合實(shí)時(shí)回收機(jī)制,有效數(shù)據(jù)占比達(dá)90%以上。這在業(yè)界非常少見。
另外,由于大集群的全集群均衡能力,服務(wù)器資源使用均衡,所以資源使用率也可以做得很高。服務(wù)器硬件可以最低位配置,所有尖峰流量在這個(gè)超大的池子里,波瀾不驚。
所以,無論是成本,還是服務(wù)能力,都很大程度受益于超大規(guī)模集群帶來的紅利。
- 靈活性
YottaStore單集群可以零研發(fā)成本同時(shí)支持各種不同的冗余模式,像兩副本、三副本、四副本、五副本,任意的EC編碼,任意的M、加任意的N、任意的算法;單AZ、雙AZ、多AZ,也都可以靈活支持。
另外,整個(gè)集群可以自適應(yīng)各種各樣不同的機(jī)型,包括JBOD;各種硬盤介質(zhì),如磁帶、HDD、SSD等,存儲(chǔ)的拓?fù)浣Y(jié)構(gòu)、混合部署也都可以任意指定。
這樣的靈活性在業(yè)界首屈一指。
- 運(yùn)營能力
以存儲(chǔ)節(jié)點(diǎn)迭代升級(jí)為例,十萬百萬規(guī)模的一個(gè)集群,上線升級(jí)速度都是一樣的。如果是同構(gòu)的數(shù)據(jù)格式,分鐘級(jí)就可以完成整個(gè)升級(jí)過程。如果是異構(gòu)的數(shù)據(jù)格式,集群可以在短時(shí)間內(nèi)自動(dòng)將數(shù)據(jù)格式透明收斂到最新版。
- 可用性
可用性達(dá)到“數(shù)個(gè)9”很容易,但是達(dá)到100%非常難。例如機(jī)房網(wǎng)絡(luò)抖動(dòng),如果容錯(cuò)做的不夠好,就很容易出現(xiàn)失敗。
YottaStore開始上線大規(guī)模支撐業(yè)務(wù)的前三個(gè)月,一直維持100%的可用性。到現(xiàn)在一年半了,系統(tǒng)一直單人值周零故障運(yùn)行,在業(yè)界是極少見的。
- 成本控制
基于前文所述的在超大規(guī)模集群和超高資源利用率上的技術(shù)突破,隨著資源利用率的增高,YottaStore的單位存儲(chǔ)成本不斷降低。
磁盤容量擴(kuò)大,單機(jī)磁盤數(shù)變多,密度增高,成本也隨之降低。此外,CPU、網(wǎng)卡等新硬件的變化都會(huì)導(dǎo)致成本降低。
針對(duì)海量小文件的用戶場景,YottaStore采用多種冗余和數(shù)據(jù)組織策略持續(xù)優(yōu)化成本。
綜上所述,YottaStore是一個(gè)擁有強(qiáng)大能力的超級(jí)存儲(chǔ)架構(gòu)平臺(tái)。目前,YottaStore已經(jīng)全面上線并支撐騰訊內(nèi)外部的存儲(chǔ)業(yè)務(wù),運(yùn)行質(zhì)量遠(yuǎn)超SLA。
基于YottaStore存儲(chǔ)系統(tǒng)的騰訊云對(duì)象存儲(chǔ)COS平臺(tái),正在為快手、OPPO、小紅書、??怠C豹、58同城等幾十多萬個(gè)企業(yè)客戶提供可靠的存儲(chǔ)服務(wù),整體數(shù)據(jù)量高達(dá)EB級(jí)別。
結(jié)語
回顧騰訊存儲(chǔ)技術(shù)的整個(gè)發(fā)展歷程,不由令人心生感慨。
15年前,騰訊存儲(chǔ)團(tuán)隊(duì)成立的時(shí)候,一定不曾想到,自己會(huì)走過這么蜿蜒曲折的發(fā)展之路。
他們不會(huì)想到,自己所在的公司會(huì)推出比QQ空間更爆款的產(chǎn)品,自己會(huì)面對(duì)更嚴(yán)峻的考驗(yàn)。
他們不會(huì)想到,自己的使命,從服務(wù)內(nèi)部,到服務(wù)外部,從服務(wù)C端,到服務(wù)B端,不斷轉(zhuǎn)變。
他們不會(huì)想到,自己開發(fā)的存儲(chǔ)系統(tǒng),數(shù)據(jù)體量規(guī)模竟然會(huì)從PB到EB,覆蓋全球范圍內(nèi)30多個(gè)region,擁有上萬臺(tái)服務(wù)器。
他們不會(huì)想到,自己所在的團(tuán)隊(duì),會(huì)成為整個(gè)公司的“黃埔”軍校,走出了無數(shù)的技術(shù)專家和管理干部。
時(shí)代就是這樣,前進(jìn)的步伐太快,永遠(yuǎn)超出常人的想象。
能夠擁有這樣的成績并非偶然。成績的背后,既離不開他們對(duì)用戶需求的精準(zhǔn)把握,也離不開對(duì)產(chǎn)品性能的極致挖潛,更離不開對(duì)技術(shù)夢(mèng)想的執(zhí)著追求。
存儲(chǔ)的戰(zhàn)爭還沒有結(jié)束,只是進(jìn)入了一個(gè)新的階段。
未來,有新的挑戰(zhàn)在等待著他們。也有新的機(jī)遇,在召喚著他們。再過15年,又會(huì)發(fā)生什么樣的故事?不如讓時(shí)間來告訴我們答案吧。