摘要:的存儲(chǔ)策略為了支持大容量,存儲(chǔ)節(jié)點(diǎn)服務(wù)器采用了分卷或分組的組織方式。的文件下載客戶端成功后,會(huì)拿到一個(gè)生成的文件名,接下來(lái)客戶端根據(jù)這個(gè)文件名即可訪問(wèn)到該文件。
FastDFS開(kāi)源地址:https://github.com/happyfish100
參考:分布式文件系統(tǒng)FastDFS設(shè)計(jì)原理
個(gè)人封裝的FastDFS Java API:https://github.com/bojiangzhou/lyyzoo-fastdfs-java
FastDFS 是一個(gè)開(kāi)源的高性能分布式文件系統(tǒng)(DFS)。 它的主要功能包括:文件存儲(chǔ),文件同步和文件訪問(wèn),以及高容量和負(fù)載平衡。主要解決了海量數(shù)據(jù)存儲(chǔ)問(wèn)題,特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務(wù)。
FastDFS 系統(tǒng)有三個(gè)角色:跟蹤服務(wù)器(Tracker Server)、存儲(chǔ)服務(wù)器(Storage Server)和客戶端(Client)。
Tracker Server:跟蹤服務(wù)器,主要做調(diào)度工作,起到均衡的作用;負(fù)責(zé)管理所有的 storage server和 group,每個(gè) storage 在啟動(dòng)后會(huì)連接 Tracker,告知自己所屬 group 等信息,并保持周期性心跳。
Storage Server:存儲(chǔ)服務(wù)器,主要提供容量和備份服務(wù);以 group 為單位,每個(gè) group 內(nèi)可以有多臺(tái) storage server,數(shù)據(jù)互為備份。
Client:客戶端,上傳下載數(shù)據(jù)的服務(wù)器,也就是我們自己的項(xiàng)目所部署在的服務(wù)器。
為了支持大容量,存儲(chǔ)節(jié)點(diǎn)(服務(wù)器)采用了分卷(或分組)的組織方式。存儲(chǔ)系統(tǒng)由一個(gè)或多個(gè)卷組成,卷與卷之間的文件是相互獨(dú)立的,所有卷的文件容量累加就是整個(gè)存儲(chǔ)系統(tǒng)中的文件容量。一個(gè)卷可以由一臺(tái)或多臺(tái)存儲(chǔ)服務(wù)器組成,一個(gè)卷下的存儲(chǔ)服務(wù)器中的文件都是相同的,卷中的多臺(tái)存儲(chǔ)服務(wù)器起到了冗余備份和負(fù)載均衡的作用。
在卷中增加服務(wù)器時(shí),同步已有的文件由系統(tǒng)自動(dòng)完成,同步完成后,系統(tǒng)自動(dòng)將新增服務(wù)器切換到線上提供服務(wù)。當(dāng)存儲(chǔ)空間不足或即將耗盡時(shí),可以動(dòng)態(tài)添加卷。只需要增加一臺(tái)或多臺(tái)服務(wù)器,并將它們配置為一個(gè)新的卷,這樣就擴(kuò)大了存儲(chǔ)系統(tǒng)的容量。
FastDFS向使用者提供基本文件訪問(wèn)接口,比如upload、download、append、delete等,以客戶端庫(kù)的方式提供給用戶使用。
Storage Server會(huì)定期的向Tracker Server發(fā)送自己的存儲(chǔ)信息。當(dāng)Tracker Server Cluster中的Tracker Server不止一個(gè)時(shí),各個(gè)Tracker之間的關(guān)系是對(duì)等的,所以客戶端上傳時(shí)可以選擇任意一個(gè)Tracker。
當(dāng)Tracker收到客戶端上傳文件的請(qǐng)求時(shí),會(huì)為該文件分配一個(gè)可以存儲(chǔ)文件的group,當(dāng)選定了group后就要決定給客戶端分配group中的哪一個(gè)storage server。當(dāng)分配好storage server后,客戶端向storage發(fā)送寫(xiě)文件請(qǐng)求,storage將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄。然后為文件分配一個(gè)fileid,最后根據(jù)以上的信息生成文件名存儲(chǔ)文件。
寫(xiě)文件時(shí),客戶端將文件寫(xiě)至group內(nèi)一個(gè)storage server即認(rèn)為寫(xiě)文件成功,storage server寫(xiě)完文件后,會(huì)由后臺(tái)線程將文件同步至同group內(nèi)其他的storage server。
每個(gè)storage寫(xiě)文件后,同時(shí)會(huì)寫(xiě)一份binlog,binlog里不包含文件數(shù)據(jù),只包含文件名等元信息,這份binlog用于后臺(tái)同步,storage會(huì)記錄向group內(nèi)其他storage同步的進(jìn)度,以便重啟后能接上次的進(jìn)度繼續(xù)同步;進(jìn)度以時(shí)間戳的方式進(jìn)行記錄,所以最好能保證集群內(nèi)所有server的時(shí)鐘保持同步。
storage的同步進(jìn)度會(huì)作為元數(shù)據(jù)的一部分匯報(bào)到tracker上,tracke在選擇讀storage的時(shí)候會(huì)以同步進(jìn)度作為參考。
客戶端uploadfile成功后,會(huì)拿到一個(gè)storage生成的文件名,接下來(lái)客戶端根據(jù)這個(gè)文件名即可訪問(wèn)到該文件。
跟upload file一樣,在downloadfile時(shí)客戶端可以選擇任意tracker server。tracker發(fā)送download請(qǐng)求給某個(gè)tracker,必須帶上文件名信息,tracke從文件名中解析出文件的group、大小、創(chuàng)建時(shí)間等信息,然后為該請(qǐng)求選擇一個(gè)storage用來(lái)服務(wù)讀請(qǐng)求。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/119025.html
摘要:優(yōu)點(diǎn)開(kāi)發(fā)成本低,可以配置加速網(wǎng)絡(luò)三分布式文件系統(tǒng)方案常見(jiàn)的分布式文件系統(tǒng)有,等。它們都不是系統(tǒng)級(jí)的分布式文件系統(tǒng),而是應(yīng)用級(jí)的分布式文件存儲(chǔ)服務(wù)。 一、小應(yīng)用存儲(chǔ)方案 在開(kāi)發(fā)中上傳文件存儲(chǔ)是個(gè)問(wèn)題,而一般小應(yīng)用開(kāi)發(fā)會(huì)選擇服務(wù)器本地目錄做為存儲(chǔ)地址,通過(guò)保存文件的相對(duì)路徑來(lái)獲取文件,在應(yīng)用不要求高可用的情況下這是一種普遍的方案。 問(wèn)題: 在每次更新Java版本時(shí),都需要將文件目錄做一次備...
摘要:優(yōu)點(diǎn)開(kāi)發(fā)成本低,可以配置加速網(wǎng)絡(luò)三分布式文件系統(tǒng)方案常見(jiàn)的分布式文件系統(tǒng)有,等。它們都不是系統(tǒng)級(jí)的分布式文件系統(tǒng),而是應(yīng)用級(jí)的分布式文件存儲(chǔ)服務(wù)。 一、小應(yīng)用存儲(chǔ)方案 在開(kāi)發(fā)中上傳文件存儲(chǔ)是個(gè)問(wèn)題,而一般小應(yīng)用開(kāi)發(fā)會(huì)選擇服務(wù)器本地目錄做為存儲(chǔ)地址,通過(guò)保存文件的相對(duì)路徑來(lái)獲取文件,在應(yīng)用不要求高可用的情況下這是一種普遍的方案。 問(wèn)題: 在每次更新Java版本時(shí),都需要將文件目錄做一次備...
摘要:一概念簡(jiǎn)述是由淘寶開(kāi)發(fā)平臺(tái)部資深架構(gòu)師余慶開(kāi)發(fā),是一個(gè)輕量級(jí)高性能的開(kāi)源分布式文件系統(tǒng),用純語(yǔ)言開(kāi)發(fā),包括文件存儲(chǔ)文件同步文件訪問(wèn)上傳下載存取負(fù)載均衡在線擴(kuò)容相同內(nèi)容只存儲(chǔ)一份等功能,適合有大容量存儲(chǔ)需求的應(yīng)用或系統(tǒng)。故障恢復(fù)后,再次奪回。 一、概念簡(jiǎn)述 FastDFS 是由淘寶開(kāi)發(fā)平臺(tái)部資深架構(gòu)師余慶開(kāi)發(fā),是一個(gè)輕量級(jí)、高性能的開(kāi)源分布式文件系統(tǒng)( Distributed File ...
閱讀 2078·2021-09-29 09:35
閱讀 673·2021-09-08 09:36
閱讀 3389·2021-09-03 10:30
閱讀 2108·2019-08-30 14:21
閱讀 2904·2019-08-30 11:18
閱讀 3305·2019-08-29 17:31
閱讀 3135·2019-08-29 17:29
閱讀 1299·2019-08-29 17:13