TFS分布式文件系統(tǒng)
TFS(Taobao FileSystem)是一個(gè)高可擴(kuò)展、高可用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),其設(shè)計(jì)目標(biāo)是支持海量的非結(jié)構(gòu)化數(shù)據(jù)。
目前,國內(nèi)自主研發(fā)的文件系統(tǒng)可謂鳳毛麟角。淘寶在這一領(lǐng)域做了有效的探索和實(shí)踐,Taobao File System(TFS)作為淘寶內(nèi)部使用的分布式文件系統(tǒng),針對(duì)海量小文件的隨機(jī)讀寫訪問性能做了特殊優(yōu)化,承載著淘寶主站所有圖片、商品描述等數(shù)據(jù)存儲(chǔ)。
文章首先概括了TFS的特點(diǎn):最近,淘寶核心系統(tǒng)團(tuán)隊(duì)工程師楚材(李震)在其官方博客上撰文(《TFS簡介》,以下簡稱文章)簡要介紹了TFS系統(tǒng)的基本情況,引起了社區(qū)的關(guān)注。
完全扁平化的數(shù)據(jù)組織結(jié)構(gòu),拋棄了傳統(tǒng)文件系統(tǒng)的目錄結(jié)構(gòu)。
在塊設(shè)備基礎(chǔ)上建立自有的文件系統(tǒng),減少EXT3等文件系統(tǒng)數(shù)據(jù)碎片帶來的性能損耗。
單進(jìn)程管理單塊磁盤的方式,摒除RAID5機(jī)制。
帶有HA機(jī)制的中央控制節(jié)點(diǎn),在安全穩(wěn)定和性能復(fù)雜度之間取得平衡。
盡量縮減元數(shù)據(jù)大小,將元數(shù)據(jù)全部加載入內(nèi)存,提升訪問速度。
跨機(jī)架和IDC的負(fù)載均衡和冗余安全策略。
完全平滑擴(kuò)容。
當(dāng)前,TFS在淘寶的應(yīng)用規(guī)模達(dá)到“數(shù)百臺(tái)PCServer,PB級(jí)數(shù)據(jù)量,百億數(shù)據(jù)級(jí)別”,對(duì)于其性能參數(shù),楚材透漏:
TFS在淘寶的部署環(huán)境中前端有兩層緩沖,到達(dá)TFS系統(tǒng)的請(qǐng)求非常離散,所以TFS內(nèi)部是沒有任何數(shù)據(jù)的內(nèi)存緩沖的,包括傳統(tǒng)文件系統(tǒng)的內(nèi)存緩沖也不存在......基本上我們可以達(dá)到單塊磁盤隨機(jī)IOPS(即I/O per second)理論最大值的60%左右,整機(jī)的輸出隨盤數(shù)增加而線性增加。
TFS的邏輯架構(gòu)圖1如下所示:
圖1. TFS邏輯架構(gòu)圖(來源:淘寶核心系統(tǒng)團(tuán)隊(duì)博客)
楚材結(jié)合架構(gòu)圖做了進(jìn)一步說明:
-
TFS尚未對(duì)最終用戶提供傳統(tǒng)文件系統(tǒng)API,需要通過TFSClient進(jìn)行接口訪問,現(xiàn)有JAVA、JNI、C、PHP的客戶端
-
TFS的NameServer作為中心控制節(jié)點(diǎn),監(jiān)控所有數(shù)據(jù)節(jié)點(diǎn)的運(yùn)行狀況,負(fù)責(zé)讀寫調(diào)度的負(fù)載均衡,同時(shí)管理一級(jí)元數(shù)據(jù)用來幫助客戶端定位需要訪問的數(shù)據(jù)節(jié)點(diǎn)
-
TFS的DataServer作為數(shù)據(jù)節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)實(shí)際發(fā)生的負(fù)載均衡和數(shù)據(jù)冗余,同時(shí)管理二級(jí)元數(shù)據(jù)幫助客戶端獲取真實(shí)的業(yè)務(wù)數(shù)據(jù)。
