Fastfds輕量級(jí)分布式文件系統(tǒng)

1.fastFDS是什么?有什么作用?
fastFDS是一個(gè)開源的輕量級(jí)的分布式文件系統(tǒng),他對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ),文件同步,文件訪問(wèn)(文件上傳,文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題,特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站,視頻網(wǎng)站等等.
2.fastFDS服務(wù)端有兩個(gè)角色:
跟蹤器:tracker,主要做調(diào)度工作,在訪問(wèn)上起負(fù)載均衡的作用
存儲(chǔ)節(jié)點(diǎn):storage,
存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)文件蝇闭,完成文件管理的所有功能:就是這樣的存儲(chǔ)敷矫、同步和提供存取接口,F(xiàn)astDFS同時(shí)對(duì)文件的metadata進(jìn)行管理饱普。所謂文件的meta data(元數(shù)據(jù))就是文件的相關(guān)屬性,以鍵值對(duì)(key valuepair)方式表示,如:width=1024,其中的key為width外潜,value為1024。文件metadata是文件屬性列表挠唆,可以包含多個(gè)鍵值對(duì)处窥。
跟蹤器和存儲(chǔ)節(jié)點(diǎn)都可以由一臺(tái)或多臺(tái)服務(wù)器構(gòu)成。跟蹤器和存儲(chǔ)節(jié)點(diǎn)中的服務(wù)器均可以隨時(shí)增加或下線而不會(huì)影響線上服務(wù)玄组。其中跟蹤器中的所有服務(wù)器都是對(duì)等的滔驾,可以根據(jù)服務(wù)器的壓力情況隨時(shí)增加或減少谒麦。
為了支持大容量,存儲(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中的文件標(biāo)識(shí)分為兩個(gè)部分:卷名和文件名灵临,二者缺一不可。

上傳交互過(guò)程

  1. client詢問(wèn)tracker上傳到的storage趴荸,不需要附加參數(shù)儒溉;
  2. tracker返回一臺(tái)可用的storage;
  3. client直接和storage通訊完成文件上傳发钝。
    FastDFS file download
    java實(shí)現(xiàn)文件的上傳功能,
    應(yīng)用:
    1.上傳controller:
/**
 * 采用分布式文件上傳系統(tǒng)完成圖片異步上傳
 * @param file
 * @return 
 * @throws Exception
 * @throws Exception
 */
@RequestMapping("console/brand/upload.do")
@ResponseBody
public HashMap<String , String>  upload(@RequestParam("pic")MultipartFile file) throws Exception, Exception{
HashMap<String, String> map = new HashMap<>();
System.out.println(file.getOriginalFilename());
//通過(guò)分布式文件系統(tǒng)上傳文件,獲取文件的訪問(wèn)地址
String path = FastDFSTools.uploadFile(file.getBytes(),file.getOriginalFilename());
//打印文件上傳后傳回的文件地址
System.out.println(path);
//將文件上傳后,分布式文件系統(tǒng)返回的圖片路徑放入map中,返回給前端以回顯圖片(通過(guò)ngnix進(jìn)行訪問(wèn)圖片)
map.put("path", Constants.FDFS_SERVER + path);
return map;
}

2.上傳的常量參數(shù)設(shè)置,及ngnix的訪問(wèn)路徑:

package cn.babasport.common;
 
public class Constants {
public static final String FDFS_SERVER = "http://192.168.57.105:8888/";
}

3.上傳工具類

package cn.babasport.common;
 
import java.io.FileNotFoundException;
import java.io.IOException;
 
import org.apache.commons.io.FilenameUtils;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.core.io.ClassPathResource;
 
public class FastDFSTools {
 
public static String uploadFile(byte[] bytes, String filename) throws Exception, IOException, Exception {
//獲取配置文件的絕對(duì)路徑
ClassPathResource pathResource = new ClassPathResource("fdfs_client.conf");
//初始化客戶端
ClientGlobal.init(pathResource.getClassLoader().getResource("fdfs_client.conf").getPath());
//創(chuàng)建分布式文件管理客戶端
TrackerClient trackerClient = new TrackerClient();
//獲取文件管理的服務(wù)
TrackerServer tc = trackerClient.getConnection();
//獲取分布式文件存儲(chǔ)端
StorageClient1 storageClient = new StorageClient1(tc, null);
//獲取文件的擴(kuò)展名
String extension = FilenameUtils.getExtension(filename);
//通過(guò)文件存儲(chǔ)端上傳文件,并返回存放在fastFDS中文件中的位置
String upload_file1 = storageClient.upload_file1(bytes, extension, null);
 
return upload_file1;
}
 
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顿涣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酝豪,更是在濱河造成了極大的恐慌涛碑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孵淘,死亡現(xiàn)場(chǎng)離奇詭異蒲障,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瘫证,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門揉阎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人背捌,你說(shuō)我怎么就攤上這事毙籽。” “怎么了毡庆?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坑赡,是天一觀的道長(zhǎng)烙如。 經(jīng)常有香客問(wèn)我,道長(zhǎng)垮衷,這世上最難降的妖魔是什么厅翔? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮搀突,結(jié)果婚禮上刀闷,老公的妹妹穿的比我還像新娘。我一直安慰自己仰迁,他們只是感情好甸昏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徐许,像睡著了一般施蜜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雌隅,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天翻默,我揣著相機(jī)與錄音,去河邊找鬼恰起。 笑死修械,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的检盼。 我是一名探鬼主播肯污,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吨枉!你這毒婦竟也來(lái)了蹦渣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤貌亭,失蹤者是張志新(化名)和其女友劉穎柬唯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體属提,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡权逗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冤议。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斟薇。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恕酸,靈堂內(nèi)的尸體忽然破棺而出堪滨,到底是詐尸還是另有隱情,我是刑警寧澤蕊温,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布袱箱,位于F島的核電站遏乔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏发笔。R本人自食惡果不足惜盟萨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望了讨。 院中可真熱鬧捻激,春花似錦、人聲如沸前计。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)男杈。三九已至丈屹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伶棒,已是汗流浹背旺垒。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肤无,地道東北人袖牙。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像舅锄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子估蹄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理涮毫,服務(wù)發(fā)現(xiàn)了袁,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 參考 官方網(wǎng)站:https://github.com/happyfish100/ 配置文檔:https://git...
    哥別打臉閱讀 92,725評(píng)論 7 44
  • 詳細(xì)配置fastdfds分布式文件服務(wù)器的方法: 跟蹤服務(wù)器:192.168.4.121 (edu-dfs-tra...
    Tsinyong閱讀 2,607評(píng)論 2 7
  • 曾經(jīng)無(wú)數(shù)次的討厭自己內(nèi)向的性格繁扎。面對(duì)親戚好友幔荒,我只會(huì)微笑;面對(duì)熱鬧場(chǎng)合梳玫,我只愿旁觀爹梁;面對(duì)家人的責(zé)備,我只能沉默提澎。沒(méi)...
    做自己最美好閱讀 327評(píng)論 0 0
  • First/FirstOrDefault其實(shí)返回集合中的一個(gè)元素姚垃,其實(shí)質(zhì)就是在SQL語(yǔ)句中加TOP (1),多與O...
    子武不是字母閱讀 1,464評(píng)論 0 0