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