▉?QZone告急,臨危受命
2005年,是中國第二次互聯網浪潮的發始之年。剛剛從破碎泡沫中走出的互聯網產業,逐漸迎來了“web 2.0”時代。
這個時代的特征,就是去中心化、開放和共享。
越來越多的互聯網用戶,開始以興趣為聚合點,組成社群,分享生活,發表觀點。他們積極參與話題討論,渴望獲得關注和認同。
在這樣的背景下,社交網絡應用開始迅速崛起。最具代表性的,就是騰訊推出的QQ空間(QZone)。
QQ空間,作為“展示自我和與他人互動的平臺”,推出之后獲得了極好的反饋,用戶數量快速增長,平臺活躍度不斷攀升。
根據當時的數據統計,QQ空間上線的3個季度,注冊用戶數就突破了5000萬,月活躍用戶數約2300萬,日訪問人數超過1300萬。
用戶數量的增長,意味著內容的增長。當時,用戶在QQ空間上傳的海量圖片、文件、頭像等UGC數據,對騰訊的存儲能力提出了巨大的考驗。
當時的騰訊,并沒有統一的存儲產品和技術平臺,各個業務部門都是自建存儲系統,自給自足。
這種方式,對于QQ空間這種爆款產品來說,顯然是無法滿足要求。它帶來的直接后果就是,空間開啟速度越來越慢,用戶體驗越來越差,投訴也越來越多。
當時,業務團隊購買存儲服務器的速度,根本趕不上用戶增長的速度。
最典型的例子,就是那時候QQ空間只允許所有用戶每天上傳800萬張圖片,只有黃鉆用戶才可以無限上傳。
與此同時,競爭對手窺覷QQ空間的業務增長,很快推出了相應的競品,意圖趁機搶奪用戶。
內憂外患之下,一支新成立的年輕團隊站了出來,勇挑重擔。
這個團隊,就是后來被譽為騰訊公司內部“黃埔軍?!?/strong>的存儲技術團隊。團隊的首任組長,就是現在的集團副總裁姚星。
團隊成立之后的首要任務,就是解決QQ空間發展所帶來的存儲瓶頸問題。
當時,面對海量數據存儲的難題,不僅是國內,就連海外也沒有什么可供參考的成熟經驗。唯一可供存儲技術團隊借鑒的,就是此前谷歌公司發表的那幾篇關于BigTable、GFS和MapReduce的論文。
如果稍微了解一點大數據知識,就會知道,這幾篇論文是海量數據存儲技術的經典之作。谷歌作為一家搜索引擎公司,當時的主要目的,是從昂貴的企業級存儲轉向大規模廉價分布式存儲,以更低的成本,滿足搜索引擎業務的需求。
這個目的,顯然和騰訊存儲技術團隊是一致的。
借鑒經驗之后,也是團隊成立的第二年,他們就上線了自主研發的TFS存儲系統,全面接管了QQ空間的相冊業務。
TFS系統上線之后,雖然緩解了業務部門的存儲壓力,但并沒有徹底解決問題。當時,系統仍然會出現比較高的延遲,影響用戶的體驗。
高延時的原因,主要是因為相冊業務和搜索引擎業務之間存在區別。相冊業務中,圖片的數據體量更小,索引密集度更高,所以難度更大,完全照搬搜索引擎模式并不可行。
于是,存儲技術團隊在TFS系統基礎上進行持續改進,推出了適合不同圖片存儲場景的系統。其中包括支持實時回收的CTFS系統、基于HDD的鍵值對TDB存儲平臺等。
終于,在持續的改進下,存儲技術團隊徹底解決了QQ空間的存儲瓶頸問題。
2009年,QQ空間成為排在網絡游戲之后的騰訊第二大收入貢獻部門,并且獲得了該年度的騰訊合作文化獎。
這個成績的背后,存儲技術團隊功不可沒。

2009年騰訊存儲技術團隊合影
2009年,SNS游戲QQ農場正式推出,掀起了全民偷菜的熱潮。當時,農場的訪問量巨大,在每秒數萬的并發訪問下,騰訊的底層存儲系統的延時和請求吞吐壓力非常大,服務器數度崩潰。
當時的騰訊,基本上把公司所有閑置服務器都用在QQ農場上,但仍遠遠不夠,需要大量采購服務器。
存儲技術團隊一方面瘋狂擴容設備,另一方面基于數據規模不太大但是訪問量極高的業務特點,快速研發了全內存的分布式存儲系統。在保障數據安全可靠的前提下,系統的并發訪問性能得到極大提升。
快速上線、快速驗證、完全自研,存儲技術團隊“hold”住了局面,再立大功。
第一階段使命的完成,使得存儲技術團隊積累了豐富的經驗。團隊成員的架構設計能力和開發能力也得到了充分的鍛煉。
很快,他們又迎來了一項新的挑戰。這次遇到的,是帶寬問題。
2011年,在QQ相冊等大體量業務快速增長的刺激下,騰訊的數據存儲量達到了50PB。
這是一個標志性的事件。
當時,騰訊所有的數據中心都在深圳。那時候骨干網絡的帶寬很小,QQ相冊高峰時占用40-50Gbps,而1G的流量對公司的網絡就已經是很大的負擔了。
于是,騰訊必須將海量的業務數據分散到全國各地,緩解訪問帶寬的壓力,同時降低成本。
存儲平臺當時啟動了相冊一通點等項目,海量業務數據開始從深圳向西安、杭州、廣州、上海等地數據遷移,訪問帶寬也同時調度到天津、南京、東莞等成本更低的一通機房。
當時存儲技術團隊搬遷的第一臺設備,數據量是100TB。在現在看來,100TB并不是很大,但是當時已經是騰訊有史以來最大的一次數據搬遷了。
更讓人意料之外的是,存儲團隊搬遷這些數據的方法,并不是通過專線(因為怕影響公司正常業務),而是通過后半夜閑時的公網出口。他們采用螞蟻搬家式的數據遷移方法,一點一點把數據拷貝到異地數據中心。
后來,隨著數據遷移工作的逐步完成,騰訊存儲網絡的帶寬壓力明顯緩解,成本也得到了有效控制。
到了2015年左右,騰訊存儲技術團隊又迎來了一個新的問題——數據太多了。
那時候,騰訊的數據總量逐漸到了500PB的量級。隨著時間的推移,此前用戶上傳的大量數據,都成了冷數據。所謂冷數據,就是很少去讀取的數據。
這些冷數據占用了大量的存儲空間,為了容災,還進行多重備份,更加消耗資源。
于是,存儲技術團隊就開始做分級存儲。他們優化了系統的分布式存儲架構,研發BTFS平臺,把數據從三副本降到1.33份的糾刪存儲。他們將QQ相冊、微云,郵件附件等產品中的歷史數據放到BTFS里面去,以此來降低存儲成本。
除此之外,他們還在數據訪問量不大的存儲服務器上做虛擬化,利用空閑的CPU資源跑計算負載,例如圖片的編解碼等,充分提升資源的利用率。
在QQ空間之后,騰訊TFS系統逐漸開始為QQ、郵箱、微云等提供存儲服務,成為整個騰訊的基礎數據存儲平臺。
2013年,騰訊正式發布了微信,開啟了新一輪的移動社交網絡大戰。微信的數據存儲需求,同樣依賴于TFS系統。

用戶使用微信,除了文字之外,還會發送海量的圖片、音頻、視頻,甚至紅包。這些操作全部離不開對存儲系統的讀寫。發朋友圈也是一樣,背后離不開存儲系統的支持。
2014年的春節,用戶數快速增長的微信,以及它背后的TFS,迎來了一場載入中國互聯網發展史冊的大考——有史以來第一次的紅包大戰。這場大戰當時有800萬用戶參與,業務團隊和存儲技術團隊感受到了前所未有的壓力。
壓力最大的時刻,就是大年三十晚上12點那個時間段,數以億計的用戶會發送祝福,造成井噴級的高并發數據讀寫需求。如果系統能力不足以應對,就會全面崩潰,影響用戶體驗,損害騰訊和微信在用戶心中的形象,失去用戶的信賴。
為了應對這種情況,存儲技術團隊對系統進行了能力深度挖潛,竭盡全力將磁盤的讀寫能力開發到極致。與此同時,他們聯合微信團隊制定了各種柔性策略,開發了很多定制化的服務,也專門開發了服務于微信業務的系統。最終,他們承受住了考驗,涉險過關。
后來,到了2015年春節,微信月活躍用戶達到5億,激烈的紅包大戰再次打響。這次,積累了豐富經驗的存儲技術團隊胸有成竹,交上了更完美的答卷。
▉ 業務開放,發力B端
隨著騰訊存儲系統的不斷成熟,加之2012年之后逐漸開始的云計算趨勢,騰訊開始考慮將TFS存儲業務面向外部開放,服務第三方業務,爭奪B端企業用戶市場。
初期騰訊云基于已有的存儲訪問接口和平臺架構對外提供服務。經過一段時間的運營,騰訊云發現外部第三方業務在體驗、可用性、成本等諸多運營方面有極高的要求。
因此,為支撐云的需求場景,騰訊云對存儲的接入層和索引層架構進行重構,架構扁平,模塊精簡。同時,騰訊云存儲開始舍棄私有接口,轉為兼容AWS S3接口與功能。
重構后,存儲架構的開放能力得到了進一步提升,支撐了騰訊云COS(Cloud Object Storage)業務近幾年的發展。
在騰訊看來,對云的理解是不斷加深的過程。他們認識到,僅有不錯的存儲平臺并不夠,必須深入研究各個行業的需求場景,提供功能、性能、質量和價格要求不同的服務,才能夠獲得用戶的認可。
2017年,騰訊云的數據量突破一個EB,成為騰訊存儲歷史上的一個標志性節點。
為了應對未來云計算業務的挑戰,騰訊存儲團隊開始了一個宏大的計劃——啟動全新的存儲架構平臺YottaStore的開發。
最開始的時候,存儲團隊內部打算給新平臺取名為BlobStorage。Blob的意思是一大塊連續的二進制數據,像一個視頻文件就是一個Blob數據。
顯然,這是大家印象中程序員的”正常操作”,但最終這個名字被確定為YottaStore。
對于做存儲的同學來說,經常會跟GB、TB、PB、EB這些概念打交道?,F在全球互聯網巨頭公司的數據量基本都是在EB這個量級。EB上面是ZB,全球互聯網巨頭數據加起來也就幾個ZB。ZB再往上,就是YB,也就是YottaByte。目前全世界所有的數據加起來,也不超過一個YottaByte。
毫無疑問,這個名字體現了騰訊對這個系統的期待,寄予了厚望。
除了足夠大之外,Yotta的中文譯名是“有他”,可以給人安全可靠放心的感覺。在騰訊內部,就有“存儲有他,能力無限”的說法。
YottaStore從2018年開始啟動研發,2019年正式上線,完全由騰訊自主研發完成。上線同年,就獲得了公司級的業務突破獎。
作為一個云存儲系統,YottaStore的能力可以說是非常強悍:
集群規模
YottaStore是一個云原生的數據存儲系統,這個系統的理論極限是一個集群可以管理超上千萬臺服務器。而要管理這上千萬臺的機器,元數據管理只需要用600G左右的空間,僅用一臺機器就能存下索引結構,這在業界絕無僅有。
資源利用率
當集群規模非常大的時候,1%的剩余空間量都非常大。所以,YottaStore將硬盤利用率提升到很高的水平,配合實時回收機制,有效數據占比達90%以上。這在業界非常少見。
另外,由于大集群的全集群均衡能力,服務器資源使用均衡,所以資源使用率也可以做得很高。服務器硬件可以最低位配置,所有尖峰流量在這個超大的池子里,波瀾不驚。
所以,無論是成本,還是服務能力,都很大程度受益于超大規模集群帶來的紅利。
靈活性
YottaStore單集群可以零研發成本同時支持各種不同的冗余模式,像兩副本、三副本、四副本、五副本,任意的EC編碼,任意的M、加任意的N、任意的算法;單AZ、雙AZ、多AZ,也都可以靈活支持。
另外,整個集群可以自適應各種各樣不同的機型,包括JBOD;各種硬盤介質,如磁帶、HDD、SSD等,存儲的拓撲結構、混合部署也都可以任意指定。
這樣的靈活性在業界首屈一指。
運營能力
以存儲節點迭代升級為例,十萬百萬規模的一個集群,上線升級速度都是一樣的。如果是同構的數據格式,分鐘級就可以完成整個升級過程。如果是異構的數據格式,集群可以在短時間內自動將數據格式透明收斂到最新版。
可用性
可用性達到“數個9”很容易,但是達到100%非常難。例如機房網絡抖動,如果容錯做的不夠好,就很容易出現失敗。
YottaStore開始上線大規模支撐業務的前三個月,一直維持100%的可用性。到現在一年半了,系統一直單人值周零故障運行,在業界是極少見的。
成本控制
基于前文所述的在超大規模集群和超高資源利用率上的技術突破,隨著資源利用率的增高,YottaStore的單位存儲成本不斷降低。
磁盤容量擴大,單機磁盤數變多,密度增高,成本也隨之降低。此外,CPU、網卡等新硬件的變化都會導致成本降低。
針對海量小文件的用戶場景,YottaStore采用多種冗余和數據組織策略持續優化成本。
基于YottaStore存儲系統的騰訊云對象存儲COS平臺,正在為快手、OPPO、小紅書、???、獵豹、58同城等幾十多萬個企業客戶提供可靠的存儲服務,整體數據量高達EB級別。
▉ 結語
回顧騰訊存儲技術的整個發展歷程,不由令人心生感慨。
15年前,騰訊存儲團隊成立的時候,一定不曾想到,自己會走過這么蜿蜒曲折的發展之路。
他們不會想到,自己所在的公司會推出比QQ空間更爆款的產品,自己會面對更嚴峻的考驗。
他們不會想到,自己的使命,從服務內部,到服務外部,從服務C端,到服務B端,不斷轉變。
他們不會想到,自己開發的存儲系統,數據體量規模竟然會從PB到EB,覆蓋全球范圍內30多個region,擁有上萬臺服務器。
他們不會想到,自己所在的團隊,會成為整個公司的“黃埔”軍校,走出了無數的技術專家和管理干部。
時代就是這樣,前進的步伐太快,永遠超出常人的想象。
能夠擁有這樣的成績并非偶然。成績的背后,既離不開他們對用戶需求的精準把握,也離不開對產品性能的極致挖潛,更離不開對技術夢想的執著追求。
存儲的戰爭還沒有結束,只是進入了一個新的階段。
未來,有新的挑戰在等待著他們。也有新的機遇,在召喚著他們。再過15年,又會發生什么樣的故事?不如讓時間來告訴我們答案吧。
—— 全文完 ——

免責聲明:本文內容由21ic獲得授權后發布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!