999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

分布式文件系統(tǒng)FastDFS文件尋址算法研究與應(yīng)用

2021-04-04 10:07:55許金財
信息記錄材料 2021年10期
關(guān)鍵詞:內(nèi)容

許金財

(廈門身份寶網(wǎng)絡(luò)科技有限公司 福建 廈門 361008)

1 引言

隨著互聯(lián)網(wǎng)的高速發(fā)展,分布式文件系統(tǒng)的應(yīng)用越來越廣泛。FastDFS是為互聯(lián)網(wǎng)應(yīng)用量身定做的分布式文件系統(tǒng),充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),適合用來存儲大量的圖片、視頻、電子文檔等文件。本文對分布式文件系統(tǒng)FastDFS進(jìn)行研究,并提出了文件編碼到文件地址的轉(zhuǎn)換算法,有效地提升了文件地址的檢索速度[1]。

2 分布式文件系統(tǒng)FastDFS簡述

FastDFS是一個開源的輕量級分布式文件系統(tǒng),采用C語言開發(fā),支持Linux、FreeBSD等UNIX系統(tǒng),充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,簡單、靈活、高效。2008年7月FastDFS發(fā)布第一個版本V1.00,截至目前最新版本是V6.07。FastDFS由跟蹤服務(wù)器(tracker server)、存儲服務(wù)器(storage server)和客戶端(client)3個部分組成,包括文件存儲、文件同步、文件訪問以及高容量和負(fù)載均衡,主要解決海量數(shù)據(jù)存儲問題。跟蹤服務(wù)器主要做調(diào)度工作,起到均衡的作用;存儲服務(wù)器主要采用分組方式提供容量和備份服務(wù)。FastDFS文件地址由FastDFS服務(wù)端生成并返回,包含了組名、文件目錄和文件名。

3 FastDFS應(yīng)用

FastDFS客戶端與服務(wù)端采用TCP通信協(xié)議,協(xié)議包由header和body兩部分組成,其中header由8字節(jié)的消息體長度、1字節(jié)的命令字和1字節(jié)的狀態(tài)碼組成,消息體由不同的命令字確定,允許空內(nèi)容[2]。

FastDFS應(yīng)用中主要包括文件上傳和文件下載兩種應(yīng)用流程。

3.1 文件上傳

文件上傳時,由FastDFS客戶端向跟蹤服務(wù)器發(fā)送帶有101命令字的消息請求,跟蹤服務(wù)器按照負(fù)載均衡算法返回可用的存儲服務(wù)器Socket地址,再由FastDFS客戶端向指定的Socket地址發(fā)送帶有11命令字和文件內(nèi)容(可攜帶文件信息)的消息請求完成文件的上傳,存儲節(jié)點返回帶有組名和文件地址的文件標(biāo)識,例如:group2/M07/1B/D8/ClhYsVz0lV6AWXPXAABKRaBPLb0897.jpg,見圖1。

圖1 文件上傳流程

在FastDFS中,上傳后的文件標(biāo)識不是由客戶端指定,而是由Storage節(jié)點生成后返回給客戶端的,文件標(biāo)識作為文件訪問憑證。

3.2 文件下載

文件下載時,由FastDFS客戶端向Tracker服務(wù)器發(fā)送帶有102命令字和文件標(biāo)識的消息請求,Tracker按照文件標(biāo)識找到匹配的Storage存儲節(jié)點服務(wù)器Socket地址,再由FastDFS客戶端向指定的Socket地址發(fā)送帶有14命令字和文件標(biāo)識的消息請求,存儲節(jié)點返回文件內(nèi)容,見圖2。

圖2 文件下載流程

4 FastDFS文件尋址算法研究

FastDFS返回的文件標(biāo)識,其表現(xiàn)形式類似于文件路徑,字符長度在46~61,與業(yè)務(wù)系統(tǒng)整合應(yīng)用時,常規(guī)做法是增加UUID唯一識別碼與文件標(biāo)識進(jìn)行映射,然后將UUID唯一標(biāo)識碼作為業(yè)務(wù)數(shù)據(jù)對應(yīng)的文件編碼進(jìn)行存儲。文件標(biāo)識映射需要使用到數(shù)據(jù)庫或Redis緩存,在高并發(fā)查詢檢索時會給服務(wù)器帶來不小的負(fù)擔(dān)。

結(jié)合FastDFS系統(tǒng)特點,本文采用了幾種常見的Base編碼方案來研究FastDFS文件尋址算法。文件上傳時,將服務(wù)端返回的FastDFS文件標(biāo)識解析為210 bit數(shù)據(jù)內(nèi)容,經(jīng)過Base編碼后生成36個字節(jié)的文件編碼作為文件的業(yè)務(wù)標(biāo)識。文件下載時,將文件編碼經(jīng)過Base解碼為210 bit數(shù)據(jù)內(nèi)容,再轉(zhuǎn)換為文件標(biāo)識。目前已在多個項目的生產(chǎn)環(huán)境中使用FastDFS分布式文件系統(tǒng)和文件尋址算法。

4.1 Base編碼方案

把二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為可打印字符集數(shù)據(jù)稱為base encoding,編碼后的數(shù)據(jù)方便用于存儲和網(wǎng)絡(luò)傳輸,本文中涉及Base32、Base64和Base62 3種編碼方案。

Base32基于32個包括字母A~V、數(shù)字0~9的可打印字符。

Base64按照bit流進(jìn)行編碼,24(6和8的最小公倍數(shù))bit為一組。

Base62是一種基于62個可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法,可打印字符包括字母A~Z、a~z、數(shù)字0~9,共有62個字符。Base62提供了一種無符號輸出的Base64的編碼方案,在許多應(yīng)用場合其純字母和數(shù)字的輸出形式,可以有效規(guī)避因為符號帶來的各種負(fù)面影響,并能夠有效削減或兼容各種Base64的變種形式。

4.2 文件標(biāo)識解析

FastDFS文件標(biāo)識由組名、主目錄索引、一級子目錄、二級子目錄、文件名5個部分組成。

(1)最大支持512個分組(V2.06之前的版本最大支持64個分組);

(2)最大支持256個主目錄;

(3)最大支持256×256個子目錄;

(4)文件名固定為34個字符,可包含“-”和“_”半角符號;

(5)支持不超過6個字符的文件擴(kuò)展名(允許無擴(kuò)展名)。

文件名的前27個字符是base64編碼字符,文件名可解析為以下6個信息。

(1)存儲節(jié)點服務(wù)器IPv4(32位整數(shù));

(2)文件創(chuàng)建時間(UNIX時間戳,32位整數(shù));

(3)文件大小(64位整數(shù));

(4)文件CRC32校驗碼(32位整數(shù));

(5)文件擴(kuò)展名(例如.jpg);

(6)隨機(jī)數(shù)(用來填補(bǔ)文件編號長度,其長度與文件擴(kuò)展名的長度加起來等于7)。

前4個信息組合起來的160 bit數(shù)據(jù)內(nèi)容經(jīng)過base64編碼后形成27個字符的唯一識別碼,F(xiàn)astDFS支持不超過6個字符的文件擴(kuò)展名,為了保持長度的一致性,當(dāng)文件擴(kuò)展名小于6個字符時,F(xiàn)astDFS將隨機(jī)生成的阿拉伯?dāng)?shù)字填入文件標(biāo)識中。

4.3 文件尋址算法

FastDFS文件標(biāo)識編碼原則,見圖3。

圖3 FastDFS文件標(biāo)識編碼圖解

(1)使用group1至group512對分組名稱進(jìn)行統(tǒng)一命名(不支持其他自定義命名的組名),編碼時僅保留分組索引;

(2)對通用的文件擴(kuò)展名進(jìn)行映射管理,最多可設(shè)置36個通用的文件擴(kuò)展名映射編碼;

(3)使用Base編碼后的文件編碼長度固定為36個字符;

(4)支持未設(shè)置映射編碼的文件擴(kuò)展名(此時應(yīng)使用文件編碼.后綴名完成文件尋址)。

FastDFS文件標(biāo)識編碼方式如下。

(1)使用2個32進(jìn)制編碼裝載10位二進(jìn)制(方便快速識別分組信息);

(2)使用7個62進(jìn)制編碼裝載41位二進(jìn)制;

(3)使用9個62進(jìn)制編碼裝載53位二進(jìn)制。

FastDFS文件編碼尋址過程如下。

(1)使用Base32將文件編碼的前兩個字符解碼為10 bit數(shù)據(jù)內(nèi)容;

(2)使用Base62將文件編碼的第3~9個字符解碼為41 bit數(shù)據(jù)內(nèi)容;

(3)使用Base62將文件編碼的剩余27個字符分3次解碼為3組53 bit數(shù)據(jù)內(nèi)容;

(4)將開頭的10 bit數(shù)據(jù)內(nèi)容轉(zhuǎn)換為分組索引并加上group分組前綴(見圖3的group2);

(5)從41 bit數(shù)據(jù)內(nèi)容中取出前3個字節(jié),轉(zhuǎn)換為文件目錄(見圖3的M07/1B/D8);

(6)從41 bit數(shù)據(jù)內(nèi)容中取出1 bit,其他3個53 bit數(shù)據(jù)內(nèi)容中分別取出5 bit,按順序組成擴(kuò)展數(shù)據(jù)項,其中十進(jìn)制的第1個數(shù)據(jù)位為預(yù)定義文件擴(kuò)展名(見圖3的.jpg),其他數(shù)值為文件標(biāo)識中擴(kuò)展部分的隨機(jī)阿拉伯?dāng)?shù)字(見圖3的897);

(7)其他剩下的160 bit數(shù)據(jù)內(nèi)容,使用Base64解碼為27個字符的唯一識別碼(見圖3的ClhYsVz0lV6AWXP XAABKRaBPLb0);

(8)最終尋址結(jié)果:group2/M07/1B/D8/ClhYsVz0lV6 AWXPXAABKRaBPLb0897.jpg。

5 結(jié)語

本文結(jié)合公司多個項目開發(fā)過程中碰到的圖片存儲服務(wù)文件編碼和檢索問題,研究了基于FastDFS分布式文件系統(tǒng)的文件編碼到文件地址的轉(zhuǎn)換算法,有效提升了文件地址的檢索速度[3]。

猜你喜歡
內(nèi)容
內(nèi)容回顧溫故知新
內(nèi)容回顧 溫故知新
內(nèi)容回顧溫故知新
內(nèi)容回顧溫故知新
內(nèi)容回顧 溫故知新
內(nèi)容回顧 溫故知新
內(nèi)容回顧 溫故知新
引言的內(nèi)容
引言的內(nèi)容
主要內(nèi)容
臺聲(2016年2期)2016-09-16 01:06:53
主站蜘蛛池模板: 亚洲成人黄色在线观看| 国产成人AV综合久久| 免费一级成人毛片| 久久伊伊香蕉综合精品| 99在线视频网站| 毛片基地美国正在播放亚洲| 日韩美毛片| 国产亚洲欧美在线视频| 国模极品一区二区三区| 欧美日韩国产成人高清视频| 国产又粗又猛又爽视频| 小说 亚洲 无码 精品| 波多野结衣一区二区三区四区视频 | 免费午夜无码18禁无码影院| 免费全部高H视频无码无遮掩| 国产福利微拍精品一区二区| 综合五月天网| 久久性妇女精品免费| 日韩国产无码一区| 亚洲国产成人精品一二区| 国产欧美精品专区一区二区| 久久久久夜色精品波多野结衣| 国产主播喷水| 国产精品综合久久久| 一本大道香蕉久中文在线播放| 国产极品美女在线观看| 999福利激情视频| 欧美日韩中文国产| 亚洲欧美成aⅴ人在线观看| 91在线日韩在线播放| 夜精品a一区二区三区| 在线国产你懂的| 国产精品19p| 国产资源站| 欧美区一区二区三| yjizz国产在线视频网| 国产精品免费p区| 无码国内精品人妻少妇蜜桃视频| 国产成人亚洲无码淙合青草| 91精品啪在线观看国产60岁| 亚洲女人在线| a毛片免费看| 国产在线视频导航| 中文字幕在线免费看| 欲色天天综合网| 亚洲第一香蕉视频| 国产精品无码一区二区桃花视频| 波多野结衣爽到高潮漏水大喷| 九九热免费在线视频| 日韩免费成人| 99热这里只有精品免费| 67194在线午夜亚洲 | 久热re国产手机在线观看| 又黄又湿又爽的视频| 婷婷色一二三区波多野衣| 免费看久久精品99| 综合色88| 国产精品主播| 日日拍夜夜操| 精品夜恋影院亚洲欧洲| 日本免费一级视频| 婷婷激情亚洲| 超薄丝袜足j国产在线视频| 人妻精品久久久无码区色视| 亚洲美女高潮久久久久久久| 毛片免费视频| 麻豆AV网站免费进入| 欧美精品一二三区| 亚洲啪啪网| 日韩AV无码一区| 蜜臀AVWWW国产天堂| 麻豆精品国产自产在线| 狠狠色丁香婷婷| 熟女成人国产精品视频| 九九九久久国产精品| 亚洲婷婷在线视频| 成色7777精品在线| 在线国产欧美| 亚洲欧美日韩中文字幕在线| 丁香六月综合网| 国模沟沟一区二区三区| 国产精品专区第1页|