必威电竞|足球世界杯竞猜平台

TFS
來(lái)源:互聯(lián)網(wǎng)

TFS(Team Foundation Server)是一個(gè)工作流協(xié)作的引擎。是一個(gè)高可擴(kuò)展、高可用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),主要針對(duì)海量的非結(jié)構(gòu)化數(shù)據(jù),它構(gòu)筑在普通的Linux機(jī)器集群上,可為外部提供高可靠和高并發(fā)的存儲(chǔ)訪問(wèn)。

簡(jiǎn)介

TFS(Team Foundation Server)是一個(gè)工作流協(xié)作的引擎,它允許一個(gè)團(tuán)隊(duì)使用他們自定義的流程,并使用在項(xiàng)目歷史中實(shí)時(shí)收集起來(lái)的一個(gè)集中的數(shù)據(jù)倉(cāng)庫(kù)。

Team Foundation Server和Visual Studio Team System中其它的部分一起,組成了軟件開(kāi)發(fā)過(guò)程中的核心部分。

我們的方法是唯一的,因?yàn)榍岸说脑O(shè)計(jì)有良好的可用性,而后端的設(shè)計(jì)集成了整個(gè)生命周期。我們主要關(guān)注于可用性,以及為個(gè)人和團(tuán)隊(duì)以一種無(wú)縫的方式進(jìn)入軟件開(kāi)發(fā)周期。

客戶關(guān)心的另外一個(gè)方面是靈活性和審核。Team Foundation Server支持Software Engineering Institute的CapaBIlity Maturity Model(CMMI)的報(bào)表和審核的功能。通過(guò)Team Foundation Server,組織可以自動(dòng)收集必要的信息,并生成自定義的報(bào)表,它可以幫助在工業(yè)管理中定位增長(zhǎng)點(diǎn)。

解決方案許多合作伙伴已經(jīng)宣布他們將把他們的產(chǎn)品與 Team Foundation Server 的功能相結(jié)合。 Teamprise 宣布了他們即將發(fā)布的解決方案,Teamprise Client Suite 1.0。Teamprise Client Suite允許軟件開(kāi)發(fā)團(tuán)隊(duì)在異構(gòu)的環(huán)境和其它的操作系統(tǒng)中,包括Linux和 MAC OS X,在EClipse Integrated Development Environment(IDE)中使用Team Foundation Server的源代碼控制和工作項(xiàng)目跟蹤的功能。Ravenflow宣布了RAVEN ProfESsional,建立在公司的REVEN Scenario產(chǎn)品的成功之上的一個(gè)工具包。REVEN Scenario是唯一一個(gè)可以從英文文本自動(dòng)生成統(tǒng)一建模語(yǔ)言(UML)圖的工具,它允許公司在開(kāi)發(fā)開(kāi)始前驗(yàn)證需求。 EDS和富士通株式會(huì)社正在演示他們的開(kāi)發(fā)方法論,并且在為他們的客戶開(kāi)發(fā)解決方案時(shí)擴(kuò)展Visual Studio Team System。這些都期望在Team Foundation Server中調(diào)節(jié)BI和報(bào)表的能力,并通過(guò)收集實(shí)時(shí)的數(shù)據(jù)來(lái)影響分析和計(jì)劃。仿液壓成型TFS是仿液壓成型的簡(jiǎn)稱,英文為:Techo Forming System,采用了3D立體特殊成型技術(shù),是屬于美利達(dá)自行車特有的專利技術(shù)。TFS是仿照HFS,用比較簡(jiǎn)單的工藝制造出的,貌似HFS車架的東東。而HFS車架,則是真正有技術(shù)含量的;獨(dú)特的;能與其他品牌真正抗衡的美利達(dá)車架。HFS是Hydraulic Horming System的縮寫,就是運(yùn)用特殊的Hydraulic Horming System液壓成型技術(shù),美利達(dá)在6066 prolite的鋁合金車架管刻劃出絕美的3D立體線條,將車架減到不可思議的程度(18"車架約1.4kg),卻同時(shí)保有美利達(dá)一貫堅(jiān)持的特性:超高的剛性強(qiáng)度。而所謂管件液壓成形技術(shù),適用于異厚異形之中空結(jié)構(gòu)管件,顧名思義是先將管材置于具形狀的模具中,藉由管件內(nèi)部加入高壓流體(目前主要以水為主),搭配軸向施加壓力補(bǔ)償管料,把管料壓入到模具腔體內(nèi)成形。使用這樣的技術(shù),可以讓HFS車架的管壁更加的薄,從而減輕重量,提高強(qiáng)度。但是由于這種加工方式設(shè)備昂貴、廢品率高,造成HFS車架的成本居高不下。薄膜存儲(chǔ)器薄膜存儲(chǔ)器thin film storage,簡(jiǎn)稱TFS,薄膜存儲(chǔ)是在集成電路工藝上發(fā)展起來(lái)的新存儲(chǔ)技術(shù)。其原理是通過(guò)改變硅基底上的薄膜的物理性質(zhì),實(shí)現(xiàn)數(shù)字信息的存儲(chǔ)。薄膜存儲(chǔ)器目前有鐵電薄膜存儲(chǔ)器和有機(jī)薄膜存儲(chǔ)器等。文件系統(tǒng)TFS(Taobao FileSystem)是一個(gè)高可擴(kuò)展、高可用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),其設(shè)計(jì)目標(biāo)是支持海量的非結(jié)構(gòu)化數(shù)據(jù)。淘蝌蚪項(xiàng)目主頁(yè):code#taobao#org/project/view/366/(#修改為.)其他解釋Tactical Fighter Squadron(TFS)戰(zhàn)術(shù)戰(zhàn)斗機(jī)中隊(duì)高等學(xué)校法語(yǔ)專業(yè)考試等級(jí)證書:TFS韓國(guó)化妝品牌子:The face shop簡(jiǎn)稱“TFS"偽后宮動(dòng)漫小說(shuō):THE Felicità Story(TFS)同步發(fā)電機(jī)型號(hào):TFS系列三次諧波同步發(fā)電機(jī)是蘭州電機(jī)有限責(zé)任公司生產(chǎn)的國(guó)產(chǎn)電機(jī)產(chǎn)品美利達(dá)山地車車架名稱:TFS特性1.采用扁平化的數(shù)據(jù)組織結(jié)構(gòu)2.使用HA架構(gòu)和平滑擴(kuò)容3.支持多種客戶端4.支持大小文件存儲(chǔ)5.可為外部提供高可靠和高并發(fā)的存儲(chǔ)訪問(wèn)6.支持大文件功能7.Resource?Center?Server,用于管理TFS集群的用戶資源配置8.TFS服務(wù)程序開(kāi)發(fā)框架,統(tǒng)一TFS網(wǎng)絡(luò)客戶端庫(kù),并新增異步回調(diào)功能9.優(yōu)化數(shù)據(jù)流,讓寫請(qǐng)求盡可能均勻的分布在不同的DataServer總體結(jié)構(gòu)一個(gè)TFS集群由兩個(gè)NameServer節(jié)點(diǎn)(一主一備)和多個(gè)!DataServer節(jié)點(diǎn)組成。這些服務(wù)程序都是作為一個(gè)用戶級(jí)的程序運(yùn)行在普通Linux機(jī)器上的DataServer進(jìn)程會(huì)給Block中的每個(gè)文件分配一個(gè)ID(File?ID,該ID在每個(gè)Block中唯一),并將每個(gè)文件在Block中的信息存放在和Block對(duì)應(yīng)的Index文件中。這個(gè)Index文件一般都會(huì)全部load在內(nèi)存,除非出現(xiàn)DataServer服務(wù)器內(nèi)存和集群中所存放文件平均大小不匹配的情況。文件名結(jié)構(gòu)TFS的文件名由塊號(hào)和文件號(hào)通過(guò)某種對(duì)應(yīng)關(guān)系組成,最大長(zhǎng)度為18字節(jié)。文件名固定以T開(kāi)始,第二字節(jié)為該集群的編號(hào)(可以在配置項(xiàng)中指定,取值范圍1~9)。余下的字節(jié)由Block?ID和File?ID通過(guò)一定的編碼方式得到。文件名由客戶端程序進(jìn)行編碼和解碼,它映射方式如下圖:TFS客戶程序在讀文件的時(shí)候通過(guò)將文件名轉(zhuǎn)換為BlockID和FileID信息,然后可以在!NameServer取得該塊所在!DataServer信息(如果客戶端有該Block與!DataServere的緩存,則直接從緩存中取),然后與!DataServer進(jìn)行讀取操作。

特性

1。 全部扁平化的數(shù)據(jù)組織結(jié)構(gòu), 遺棄了傳統(tǒng)文件系統(tǒng)的目錄結(jié)構(gòu)?

2。 使用HA架構(gòu)和平滑擴(kuò)容?

3。 支持多種客戶端?

4。 支持大小文件存儲(chǔ)?

5。 可為外部提供高可靠和高并發(fā)的存儲(chǔ)訪問(wèn)?

6。 支持大文件功能?

7。 Resource Center Server,用于管理TFS集群的用戶資源配置?

8。 TFS服務(wù)程序開(kāi)發(fā)框架,統(tǒng)一TFS網(wǎng)絡(luò)客戶端庫(kù),并新增異步回調(diào)功能?

9。 優(yōu)化數(shù)據(jù)流,讓寫請(qǐng)求盡可能均勻的分布在不同的DataServer?

總體架構(gòu)

一個(gè)TFS集群由兩個(gè)NameServer節(jié)點(diǎn)(一主一備)和多個(gè)DataServer節(jié)點(diǎn)組成。這些服務(wù)程序都是作為一個(gè)用戶級(jí)的程序運(yùn)行在普通Linux機(jī)器上的。

圖1 TFS總體架構(gòu)

同時(shí)為了考慮容災(zāi),NameServer采用了HA結(jié)構(gòu),即兩臺(tái)機(jī)器互為熱備,同時(shí)運(yùn)行,一臺(tái)為主,一臺(tái)為備,主機(jī)綁定到對(duì)外vip,提供服務(wù);當(dāng)主機(jī)器宕機(jī)后,迅速將vip綁定至備份NameServer,將其切換為主機(jī),對(duì)外提供服務(wù)。圖1中的HeartAgent就完成了此功能。

TFS的設(shè)計(jì)目標(biāo)是海量小文件的存儲(chǔ),所以在TFS中,將大量的小文件(實(shí)際數(shù)據(jù)文件)合并成為一個(gè)大文件,這個(gè)大文件稱為塊(Block), 每個(gè)Block擁有在集群內(nèi)唯一的編號(hào)(BlockId),Block Id在NameServer在創(chuàng)建Block的時(shí)候分配, NameServer維護(hù)block與DataServer的關(guān)系。Block中的實(shí)際數(shù)據(jù)都存儲(chǔ)在DataServer上。而一臺(tái)DataServer服務(wù)器一般會(huì)有多個(gè)獨(dú)立DataServer進(jìn)程存在,每個(gè)進(jìn)程負(fù)責(zé)管理一個(gè)掛載點(diǎn),這個(gè)掛載點(diǎn)一般是一個(gè)獨(dú)立磁盤上的文件目錄,以降低單個(gè)磁盤損壞帶來(lái)的影響。

NameServer

NameServer主要功能是: 管理維護(hù)Block和DataServer相關(guān)信息,包括DataServer加入,退出, 心跳信息, block和DataServer的對(duì)應(yīng)關(guān)系建立,解除。

正常情況下,一個(gè)塊會(huì)在DataServer上存在, 主NameServer負(fù)責(zé)Block的創(chuàng)建,刪除,復(fù)制,均衡,整理, NameServer不負(fù)責(zé)實(shí)際數(shù)據(jù)的讀寫,實(shí)際數(shù)據(jù)的讀寫由DataServer完成。

DataServer

DataServer主要功能是: 負(fù)責(zé)實(shí)際數(shù)據(jù)的存儲(chǔ)和讀寫。

TFS的塊大小可以通過(guò)配置項(xiàng)來(lái)決定,通常使用的塊大小為64M。TFS的設(shè)計(jì)目標(biāo)是海量小文件的存儲(chǔ),所以每個(gè)塊中會(huì)存儲(chǔ)許多不同的小文件。DataServer進(jìn)程會(huì)給Block中的每個(gè)文件分配一個(gè)ID(File ID,該ID在每個(gè)Block中唯一),并將每個(gè)文件在Block中的信息存放在和Block對(duì)應(yīng)的Index文件中。這個(gè)Index文件一般都會(huì)全部存放在內(nèi)存,除非出現(xiàn)DataServer服務(wù)器內(nèi)存和集群中所存放文件平均大小不匹配的情況。

另外,還可以部署一個(gè)對(duì)等的TFS集群,作為當(dāng)前集群的輔集群。輔集群不提供來(lái)自應(yīng)用的寫入,只接受來(lái)自主集群的寫入。當(dāng)前主集群的每個(gè)數(shù)據(jù)變更操作都會(huì)重放至輔集群。輔集群也可以提供對(duì)外的讀,并且在主集群出現(xiàn)故障的時(shí)候,可以接管主集群的工作。

存儲(chǔ)機(jī)制

Block的存儲(chǔ)方式

在TFS中,將大量的小文件(實(shí)際用戶文件)合并成為一個(gè)大文件,這個(gè)大文件稱為塊(Block)。TFS以Block的方式組織文件的存儲(chǔ)。每一個(gè)Block在整個(gè)集群內(nèi)擁有唯一的編號(hào),這個(gè)編號(hào)是由NameServer進(jìn)行分配的,而DataServer上實(shí)際存儲(chǔ)了該Block。在NameServer節(jié)點(diǎn)中存儲(chǔ)了所有的Block的信息,一個(gè)Block存儲(chǔ)于多個(gè)DataServer中以保證數(shù)據(jù)的冗余。對(duì)于數(shù)據(jù)讀寫請(qǐng)求,均先由NameServer選擇合適的DataServer節(jié)點(diǎn)返回給客戶端,再在對(duì)應(yīng)的DataServer節(jié)點(diǎn)上進(jìn)行數(shù)據(jù)操作。NameServer需要維護(hù)Block信息列表,以及Block與DataServer之間的映射關(guān)系,其存儲(chǔ)的元數(shù)據(jù)結(jié)構(gòu)如下:

存儲(chǔ)的元數(shù)據(jù)結(jié)構(gòu)?

在DataServer節(jié)點(diǎn)上,在掛載目錄上會(huì)有很多物理塊,物理塊以文件的形式存在磁盤上,并在DataServer部署前預(yù)先分配,以保證后續(xù)的訪問(wèn)速度和減少碎片產(chǎn)生。為了滿足這個(gè)特性,DataServer現(xiàn)一般在ext4文件系統(tǒng)上運(yùn)行。物理塊分為主塊和擴(kuò)展塊,一般主塊的大小會(huì)遠(yuǎn)大于擴(kuò)展塊,使用擴(kuò)展塊是為了滿足文件更新操作時(shí)文件大小的變化。每個(gè)Block在文件系統(tǒng)上以“主塊+擴(kuò)展塊”的方式存儲(chǔ)。每一個(gè)Block可能對(duì)應(yīng)于多個(gè)物理塊,其中包括一個(gè)主塊,多個(gè)擴(kuò)展塊。

在DataServer端,每個(gè)Block可能會(huì)有多個(gè)實(shí)際的物理文件組成:一個(gè)主Physical Block文件,N個(gè)擴(kuò)展Physical Block文件和一個(gè)與該Block對(duì)應(yīng)的索引文件。Block中的每個(gè)小文件會(huì)用一個(gè)block內(nèi)唯一的fileid來(lái)標(biāo)識(shí)。DataServer會(huì)在啟動(dòng)的時(shí)候把自身所擁有的Block和對(duì)應(yīng)的索引文件加載進(jìn)來(lái)。

文件名結(jié)構(gòu)

TFS的文件名由塊號(hào)和文件號(hào)通過(guò)某種對(duì)應(yīng)關(guān)系組成,最大長(zhǎng)度為18字節(jié)。文件名固定以T開(kāi)始,第二字節(jié)為該集群的編號(hào)(可以在配置項(xiàng)中指定,取值范圍 1~9)。余下的字節(jié)由Block ID和File ID通過(guò)一定的編碼方式得到。文件名由客戶端程序進(jìn)行編碼和解碼,它映射方式如下圖:

映射方式?

TFS客戶程序在讀文件的時(shí)候通過(guò)將文件名轉(zhuǎn)換為BlockID和FileID信息,然后可以在NameServer取得該塊所在DataServer信息(如果客戶端有該Block與DataServere的緩存,則直接從緩存中取),然后與DataServer進(jìn)行讀取操作。?

并發(fā)機(jī)制

對(duì)于同一個(gè)文件來(lái)說(shuō),多個(gè)用戶可以并發(fā)讀。

現(xiàn)有TFS并不支持并發(fā)寫一個(gè)文件。一個(gè)文件只會(huì)有一個(gè)用戶在寫。這在TFS的設(shè)計(jì)里面對(duì)應(yīng)著是一個(gè)block同時(shí)只能有一個(gè)寫或者更新操作。

容錯(cuò)機(jī)制

集群容錯(cuò)

TFS可以配置主輔集群,一般主輔集群會(huì)存放在兩個(gè)不同的機(jī)房。主集群提供所有功能,輔集群只提供讀。主集群會(huì)把所有操作重放到輔集群。這樣既提供了負(fù)載均衡,又可以在主集群機(jī)房出現(xiàn)異常的情況不會(huì)中斷服務(wù)或者丟失數(shù)據(jù)。

NameServer容錯(cuò)

Namserver主要管理了DataServer和Block之間的關(guān)系。如每個(gè)DataServer擁有哪些Block,每個(gè)Block存放在哪些DataServer上等。同時(shí),NameServer采用了HA結(jié)構(gòu),一主一備,主NameServer上的操作會(huì)重放至備NameServer。如果主NameServer出現(xiàn)問(wèn)題,可以實(shí)時(shí)切換到備NameServer。

另外NameServer和DataServer之間也會(huì)有定時(shí)的heartbeat,DataServer會(huì)把自己擁有的Block發(fā)送給NameServer。NameServer會(huì)根據(jù)這些信息重建DataServer和Block的關(guān)系。

DataServer容錯(cuò)

TFS采用Block存儲(chǔ)多份的方式來(lái)實(shí)現(xiàn)DataServer的容錯(cuò)。每一個(gè)Block會(huì)在TFS中存在多份,一般為3份,并且分布在不同網(wǎng)段的不同DataServer上。對(duì)于每一個(gè)寫入請(qǐng)求,必須在所有的Block寫入成功才算成功。當(dāng)出現(xiàn)磁盤損壞DataServer宕機(jī)的時(shí)候,TFS啟動(dòng)復(fù)制流程,把備份數(shù)未達(dá)到最小備份數(shù)的Block盡快復(fù)制到其他DataServer上去。 TFS對(duì)每一個(gè)文件會(huì)記錄校驗(yàn)crc,當(dāng)客戶端發(fā)現(xiàn)crc和文件內(nèi)容不匹配時(shí),會(huì)自動(dòng)切換到一個(gè)好的block上讀取。此后客戶端將會(huì)實(shí)現(xiàn)自動(dòng)修復(fù)單個(gè)文件損壞的情況。

平滑擴(kuò)容

原有TFS集群運(yùn)行一定時(shí)間后,集群容量不足,此時(shí)需要對(duì)TFS集群擴(kuò)容。由于DataServer與NameServer之間使用心跳機(jī)制通信,如果系統(tǒng)擴(kuò)容,只需要將相應(yīng)數(shù)量的新DataServer服務(wù)器部署好應(yīng)用程序后啟動(dòng)即可。這些DataServer服務(wù)器會(huì)向NameServer進(jìn)行心跳匯報(bào)。NameServer會(huì)根據(jù)DataServer容量的比率和DataServer的負(fù)載決定新數(shù)據(jù)寫往哪臺(tái)DataServer的服務(wù)器。根據(jù)寫入策略,容量較小,負(fù)載較輕的服務(wù)器新數(shù)據(jù)寫入的概率會(huì)比較高。同時(shí),在集群負(fù)載比較輕的時(shí)候,NameServer會(huì)對(duì)DataServer上的Block進(jìn)行均衡,使所有DataServer的容量盡早達(dá)到均衡。

進(jìn)行均衡計(jì)劃時(shí),首先計(jì)算每臺(tái)機(jī)器應(yīng)擁有的blocks平均數(shù)量,然后將機(jī)器劃分為兩堆,一堆是超過(guò)平均數(shù)量的,作為移動(dòng)源;一類是低于平均數(shù)量的,作為移動(dòng)目的。

移動(dòng)目的的選擇:首先一個(gè)block的移動(dòng)的源和目的,應(yīng)該保持在同一網(wǎng)段內(nèi),也就是要與另外的block不同網(wǎng)段;另外,在作為目的的一定機(jī)器內(nèi),優(yōu)先選擇同機(jī)器的源到目的之間移動(dòng),也就是同臺(tái)DataServer服務(wù)器中的不同DataServer進(jìn)程。

當(dāng)有服務(wù)器故障或者下線退出時(shí)(單個(gè)集群內(nèi)的不同網(wǎng)段機(jī)器不能同時(shí)退出),不影響TFS的服務(wù)。此時(shí)NameServer會(huì)檢測(cè)到備份數(shù)減少的Block,對(duì)這些Block重新進(jìn)行數(shù)據(jù)復(fù)制。

在創(chuàng)建復(fù)制計(jì)劃時(shí),一次要復(fù)制多個(gè)block, 每個(gè)block的復(fù)制源和目的都要盡可能的不同,并且保證每個(gè)block在不同的子網(wǎng)段內(nèi)。因此采用輪換選擇(roundrobin)算法,并結(jié)合加權(quán)平均。

由于DataServer之間的通信是主要發(fā)生在數(shù)據(jù)寫入轉(zhuǎn)發(fā)的時(shí)候和數(shù)據(jù)復(fù)制的時(shí)候,集群擴(kuò)容基本沒(méi)有影響。假設(shè)一個(gè)Block為64M,數(shù)量級(jí)為1。那么NameServer上會(huì)有 1 * 1024 * 1024 * 1024 / 64 = 16。7M個(gè)block。假設(shè)每個(gè)Block的元數(shù)據(jù)大小為0.1K,則占用內(nèi)存不到2G。

參考資料 >

生活家百科家居網(wǎng)