分布式文件系統(tǒng)FastDFS詳解

本文轉(zhuǎn)載:http://www.ityouknow.com/fastdfs/2018/01/06/distributed-file-system-fastdfs.html

)
上一篇文章《一次FastDFS并發(fā)問題的排查經(jīng)歷》介紹了一次生產(chǎn)排查并發(fā)問題的經(jīng)歷,可能有些人對(duì)FastDFS不是特別的了解,因此計(jì)劃寫幾篇文章完整的介紹一下這個(gè)軟件景用。

為什么要使用分布式文件系統(tǒng)呢荧琼?

嗯,這個(gè)問題問的好兼贡,使用了它對(duì)我們有哪些好處?帶著這個(gè)問題我們來(lái)往下看:

單機(jī)時(shí)代

初創(chuàng)時(shí)期由于時(shí)間緊迫,在各種資源有限的情況下惶我,通常就直接在項(xiàng)目目錄下建立靜態(tài)文件夾,用于用戶存放項(xiàng)目中的文件資源博投。如果按不同類型再細(xì)分绸贡,可以在項(xiàng)目目錄下再建立不同的子目錄來(lái)區(qū)分。例如:resources\static\file毅哗、resources\static\img等听怕。

優(yōu)點(diǎn):這樣做比較便利,項(xiàng)目直接引用就行虑绵,實(shí)現(xiàn)起來(lái)也簡(jiǎn)單尿瞭,無(wú)需任何復(fù)雜技術(shù),保存數(shù)據(jù)庫(kù)記錄和訪問起來(lái)也很方便翅睛。

缺點(diǎn):如果只是后臺(tái)系統(tǒng)的使用一般也不會(huì)有什么問題声搁,但是作為一個(gè)前端網(wǎng)站使用的話就會(huì)存在弊端。一方面捕发,文件和代碼耦合在一起疏旨,文件越多存放越混亂;另一方面扎酷,如果流量比較大檐涝,靜態(tài)文件訪問會(huì)占據(jù)一定的資源,影響正常業(yè)務(wù)進(jìn)行,不利于網(wǎng)站快速發(fā)展谁榜。

獨(dú)立文件服務(wù)器

隨著公司業(yè)務(wù)不斷發(fā)展拉岁,將代碼和文件放在同一服務(wù)器的弊端就會(huì)越來(lái)越明顯。為了解決上面的問題引入獨(dú)立圖片服務(wù)器惰爬,工作流程如下:項(xiàng)目上傳文件時(shí)喊暖,首先通過(guò)ftp或者ssh將文件上傳到圖片服務(wù)器的某個(gè)目錄下,再通過(guò)ngnix或者apache來(lái)訪問此目錄下的文件撕瞧,返回一個(gè)獨(dú)立域名的圖片URL地址陵叽,前端使用文件時(shí)就通過(guò)這個(gè)URL地址讀取。

優(yōu)點(diǎn):圖片訪問是很消耗服務(wù)器資源的(因?yàn)闀?huì)涉及到操作系統(tǒng)的上下文切換和磁盤I/O操作)丛版,分離出來(lái)后巩掺,Web/App服務(wù)器可以更專注發(fā)揮動(dòng)態(tài)處理的能力;獨(dú)立存儲(chǔ)页畦,更方便做擴(kuò)容胖替、容災(zāi)和數(shù)據(jù)遷移;方便做圖片訪問請(qǐng)求的負(fù)載均衡豫缨,方便應(yīng)用各種緩存策略(HTTP Header独令、Proxy Cache等),也更加方便遷移到CDN好芭。

缺點(diǎn):?jiǎn)螜C(jī)存在性能瓶頸燃箭,容災(zāi)、垂直擴(kuò)展性稍差

分布式文件系統(tǒng)

通過(guò)獨(dú)立文件服務(wù)器可以解決一些問題舍败,如果某天存儲(chǔ)文件的那臺(tái)服務(wù)突然down了怎么辦招狸?可能你會(huì)說(shuō),定時(shí)將文件系統(tǒng)備份邻薯,這臺(tái)down機(jī)的時(shí)候裙戏,迅速切換到另一臺(tái)就OK了,但是這樣處理需要人工來(lái)干預(yù)厕诡。另外累榜,當(dāng)存儲(chǔ)的文件超過(guò)100T的時(shí)候怎么辦?單臺(tái)服務(wù)器的性能問題木人?這個(gè)時(shí)候我們就應(yīng)該考慮分布式文件系統(tǒng)了信柿。

業(yè)務(wù)繼續(xù)發(fā)展,單臺(tái)服務(wù)器存儲(chǔ)和響應(yīng)也很快到達(dá)了瓶頸醒第,新的業(yè)務(wù)需要文件訪問具有高響應(yīng)性、高可用性來(lái)支持系統(tǒng)进鸠。分布式文件系統(tǒng)稠曼,一般分為三塊內(nèi)容來(lái)配合,服務(wù)的存儲(chǔ)客年、訪問的仲裁系統(tǒng)霞幅,文件存儲(chǔ)系統(tǒng)漠吻,文件的容災(zāi)系統(tǒng)來(lái)構(gòu)成,仲裁系統(tǒng)相當(dāng)于文件服務(wù)器的大腦司恳,根據(jù)一定的算法來(lái)決定文件存儲(chǔ)的位置途乃,文件存儲(chǔ)系統(tǒng)負(fù)責(zé)保存文件,容災(zāi)系統(tǒng)負(fù)責(zé)文件系統(tǒng)和自己的相互備份扔傅。

優(yōu)點(diǎn):擴(kuò)展能力: 毫無(wú)疑問耍共,擴(kuò)展能力是一個(gè)分布式文件系統(tǒng)最重要的特點(diǎn);高可用性: 在分布式文件系統(tǒng)中猎塞,高可用性包含兩層试读,一是整個(gè)文件系統(tǒng)的可用性,二是數(shù)據(jù)的完整和一致性荠耽;彈性存儲(chǔ): 可以根據(jù)業(yè)務(wù)需要靈活地增加或縮減數(shù)據(jù)存儲(chǔ)以及增刪存儲(chǔ)池中的資源钩骇,而不需要中斷系統(tǒng)運(yùn)行

缺點(diǎn):系統(tǒng)復(fù)雜度稍高,需要更多服務(wù)器

FastDFS

毫無(wú)疑問FastDFS就屬于我們上面介紹的分布式文件系統(tǒng)铝量,下面我們來(lái)詳細(xì)了解一下:

什么是FastDFS

FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng)倘屹。它解決了大數(shù)據(jù)量存儲(chǔ)和負(fù)載均衡等問題。特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務(wù)慢叨,如相冊(cè)網(wǎng)站唐瀑、視頻網(wǎng)站等等。在UC基于FastDFS開發(fā)向用戶提供了:網(wǎng)盤插爹,社區(qū)哄辣,廣告和應(yīng)用下載等業(yè)務(wù)的存儲(chǔ)服務(wù)。

FastDFS是一款開源的輕量級(jí)分布式文件系統(tǒng)純C實(shí)現(xiàn)赠尾,支持Linux力穗、FreeBSD等UNIX系統(tǒng)類google FS,不是通用的文件系統(tǒng)气嫁,只能通過(guò)專有API訪問当窗,目前提供了C、Java和PHP API為互聯(lián)網(wǎng)應(yīng)用量身定做寸宵,解決大容量文件存儲(chǔ)問題崖面,追求高性能和高擴(kuò)展性FastDFS可以看做是基于文件的key value pair存儲(chǔ)系統(tǒng),稱作分布式文件存儲(chǔ)服務(wù)更為合適梯影。

FastDFS特性

  • 文件不分塊存儲(chǔ)巫员,上傳的文件和OS文件系統(tǒng)中的文件一一對(duì)應(yīng)
  • 支持相同內(nèi)容的文件只保存一份,節(jié)約磁盤空間
  • 下載文件支持HTTP協(xié)議甲棍,可以使用內(nèi)置Web Server简识,也可以和其他Web Server配合使用
  • 支持在線擴(kuò)容
  • 支持主從文件
  • 存儲(chǔ)服務(wù)器上可以保存文件屬性(meta-data)V2.0網(wǎng)絡(luò)通信采用libevent,支持大并發(fā)訪問,整體性能更好

FastDFS相關(guān)概念

FastDFS服務(wù)端有三個(gè)角色:跟蹤服務(wù)器(tracker server)七扰、存儲(chǔ)服務(wù)器(storage server)和客戶端(client)奢赂。

tracker server:跟蹤服務(wù)器,主要做調(diào)度工作颈走,起負(fù)載均衡的作用膳灶。在內(nèi)存中記錄集群中所有存儲(chǔ)組和存儲(chǔ)服務(wù)器的狀態(tài)信息,是客戶端和數(shù)據(jù)服務(wù)器交互的樞紐立由。相比GFS中的master更為精簡(jiǎn)轧钓,不記錄文件索引信息,占用的內(nèi)存量很少拆吆。

Tracker是FastDFS的協(xié)調(diào)者聋迎,負(fù)責(zé)管理所有的storage server和group,每個(gè)storage在啟動(dòng)后會(huì)連接Tracker枣耀,告知自己所屬的group等信息霉晕,并保持周期性的心跳,tracker根據(jù)storage的心跳信息捞奕,建立group==>[storage server list]的映射表牺堰。

Tracker需要管理的元信息很少,會(huì)全部存儲(chǔ)在內(nèi)存中颅围;另外tracker上的元信息都是由storage匯報(bào)的信息生成的伟葫,本身不需要持久化任何數(shù)據(jù),這樣使得tracker非常容易擴(kuò)展院促,直接增加tracker機(jī)器即可擴(kuò)展為tracker cluster來(lái)服務(wù)筏养,cluster里每個(gè)tracker之間是完全對(duì)等的,所有的tracker都接受stroage的心跳信息常拓,生成元數(shù)據(jù)信息來(lái)提供讀寫服務(wù)渐溶。

storage server:存儲(chǔ)服務(wù)器(又稱:存儲(chǔ)節(jié)點(diǎn)或數(shù)據(jù)服務(wù)器),文件和文件屬性(meta data)都保存到存儲(chǔ)服務(wù)器上弄抬。Storage server直接利用OS的文件系統(tǒng)調(diào)用管理文件茎辐。

Storage server(后簡(jiǎn)稱storage)以組(卷,group或volume)為單位組織掂恕,一個(gè)group內(nèi)包含多臺(tái)storage機(jī)器拖陆,數(shù)據(jù)互為備份,存儲(chǔ)空間以group內(nèi)容量最小的storage為準(zhǔn)懊亡,所以建議group內(nèi)的多個(gè)storage盡量配置相同依啰,以免造成存儲(chǔ)空間的浪費(fèi)。

以group為單位組織存儲(chǔ)能方便的進(jìn)行應(yīng)用隔離斋配、負(fù)載均衡孔飒、副本數(shù)定制(group內(nèi)storage server數(shù)量即為該group的副本數(shù))灌闺,比如將不同應(yīng)用數(shù)據(jù)存到不同的group就能隔離應(yīng)用數(shù)據(jù)艰争,同時(shí)還可根據(jù)應(yīng)用的訪問特性來(lái)將應(yīng)用分配到不同的group來(lái)做負(fù)載均衡坏瞄;缺點(diǎn)是group的容量受單機(jī)存儲(chǔ)容量的限制,同時(shí)當(dāng)group內(nèi)有機(jī)器壞掉時(shí)甩卓,數(shù)據(jù)恢復(fù)只能依賴group內(nèi)地其他機(jī)器鸠匀,使得恢復(fù)時(shí)間會(huì)很長(zhǎng)。

group內(nèi)每個(gè)storage的存儲(chǔ)依賴于本地文件系統(tǒng)逾柿,storage可配置多個(gè)數(shù)據(jù)存儲(chǔ)目錄缀棍,比如有10塊磁盤,分別掛載在/data/disk1-/data/disk10机错,則可將這10個(gè)目錄都配置為storage的數(shù)據(jù)存儲(chǔ)目錄爬范。

storage接受到寫文件請(qǐng)求時(shí),會(huì)根據(jù)配置好的規(guī)則(后面會(huì)介紹)弱匪,選擇其中一個(gè)存儲(chǔ)目錄來(lái)存儲(chǔ)文件青瀑。為了避免單個(gè)目錄下的文件數(shù)太多,在storage第一次啟動(dòng)時(shí)萧诫,會(huì)在每個(gè)數(shù)據(jù)存儲(chǔ)目錄里創(chuàng)建2級(jí)子目錄斥难,每級(jí)256個(gè),總共65536個(gè)文件帘饶,新寫的文件會(huì)以hash的方式被路由到其中某個(gè)子目錄下哑诊,然后將文件數(shù)據(jù)直接作為一個(gè)本地文件存儲(chǔ)到該目錄中。

client:客戶端及刻,作為業(yè)務(wù)請(qǐng)求的發(fā)起方镀裤,通過(guò)專有接口,使用TCP/IP協(xié)議與跟蹤器服務(wù)器或存儲(chǔ)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互缴饭。FastDFS向使用者提供基本文件訪問接口暑劝,比如upload、download茴扁、append铃岔、delete等,以客戶端庫(kù)的方式提供給用戶使用峭火。

另外兩個(gè)概念:

group :組毁习, 也可稱為卷。 同組內(nèi)服務(wù)器上的文件是完全相同的 卖丸,同一組內(nèi)的storage server之間是對(duì)等的纺且, 文件上傳、 刪除等操作可以在任意一臺(tái)storage server上進(jìn)行 稍浆。

meta data :文件相關(guān)屬性载碌,鍵值對(duì)( Key Value Pair) 方式猜嘱,如:width=1024,heigth=768 。

image

Tracker相當(dāng)于FastDFS的大腦嫁艇,不論是上傳還是下載都是通過(guò)tracker來(lái)分配資源朗伶;客戶端一般可以使用ngnix等靜態(tài)服務(wù)器來(lái)調(diào)用或者做一部分的緩存;存儲(chǔ)服務(wù)器內(nèi)部分為卷(或者叫做組)步咪,卷于卷之間是平行的關(guān)系论皆,可以根據(jù)資源的使用情況隨時(shí)增加,卷內(nèi)服務(wù)器文件相互同步備份猾漫,以達(dá)到容災(zāi)的目的点晴。

上傳機(jī)制

首先客戶端請(qǐng)求Tracker服務(wù)獲取到存儲(chǔ)服務(wù)器的ip地址和端口,然后客戶端根據(jù)返回的IP地址和端口號(hào)請(qǐng)求上傳文件悯周,存儲(chǔ)服務(wù)器接收到請(qǐng)求后生產(chǎn)文件粒督,并且將文件內(nèi)容寫入磁盤并返回給客戶端file_id、路徑信息禽翼、文件名等信息屠橄,客戶端保存相關(guān)信息上傳完畢。

image

內(nèi)部機(jī)制如下:

1捐康、選擇tracker server

當(dāng)集群中不止一個(gè)tracker server時(shí)仇矾,由于tracker之間是完全對(duì)等的關(guān)系,客戶端在upload文件時(shí)可以任意選擇一個(gè)trakcer解总。 選擇存儲(chǔ)的group 當(dāng)tracker接收到upload file的請(qǐng)求時(shí)贮匕,會(huì)為該文件分配一個(gè)可以存儲(chǔ)該文件的group,支持如下選擇group的規(guī)則:

  • 1花枫、Round robin刻盐,所有的group間輪詢
  • 2、Specified group劳翰,指定某一個(gè)確定的group
  • 3敦锌、Load balance,剩余存儲(chǔ)空間多多group優(yōu)先

2佳簸、選擇storage server

當(dāng)選定group后乙墙,tracker會(huì)在group內(nèi)選擇一個(gè)storage server給客戶端,支持如下選擇storage的規(guī)則:

  • 1生均、Round robin听想,在group內(nèi)的所有storage間輪詢
  • 2、First server ordered by ip马胧,按ip排序
  • 3汉买、First server ordered by priority,按優(yōu)先級(jí)排序(優(yōu)先級(jí)在storage上配置)

3佩脊、選擇storage path

當(dāng)分配好storage server后蛙粘,客戶端將向storage發(fā)送寫文件請(qǐng)求垫卤,storage將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄,支持如下規(guī)則:

  • 1出牧、Round robin穴肘,多個(gè)存儲(chǔ)目錄間輪詢
  • 2、剩余存儲(chǔ)空間最多的優(yōu)先

4崔列、生成Fileid

選定存儲(chǔ)目錄之后梢褐,storage會(huì)為文件生一個(gè)Fileid旺遮,由storage server ip赵讯、文件創(chuàng)建時(shí)間、文件大小耿眉、文件crc32和一個(gè)隨機(jī)數(shù)拼接而成边翼,然后將這個(gè)二進(jìn)制串進(jìn)行base64編碼,轉(zhuǎn)換為可打印的字符串鸣剪。 選擇兩級(jí)目錄 當(dāng)選定存儲(chǔ)目錄之后组底,storage會(huì)為文件分配一個(gè)fileid,每個(gè)存儲(chǔ)目錄下有兩級(jí)256*256的子目錄筐骇,storage會(huì)按文件fileid進(jìn)行兩次hash(猜測(cè))债鸡,路由到其中一個(gè)子目錄,然后將文件以fileid為文件名存儲(chǔ)到該子目錄下铛纬。

5厌均、生成文件名

當(dāng)文件存儲(chǔ)到某個(gè)子目錄后,即認(rèn)為該文件存儲(chǔ)成功告唆,接下來(lái)會(huì)為該文件生成一個(gè)文件名棺弊,文件名由group、存儲(chǔ)目錄擒悬、兩級(jí)子目錄模她、fileid、文件后綴名(由客戶端指定懂牧,主要用于區(qū)分文件類型)拼接而成侈净。

下載機(jī)制

客戶端帶上文件名信息請(qǐng)求Tracker服務(wù)獲取到存儲(chǔ)服務(wù)器的ip地址和端口,然后客戶端根據(jù)返回的IP地址和端口號(hào)請(qǐng)求下載文件僧凤,存儲(chǔ)服務(wù)器接收到請(qǐng)求后返回文件給客戶端畜侦。

image

跟upload file一樣,在download file時(shí)客戶端可以選擇任意tracker server拼弃。tracker發(fā)送download請(qǐng)求給某個(gè)tracker夏伊,必須帶上文件名信息,tracke從文件名中解析出文件的group吻氧、大小溺忧、創(chuàng)建時(shí)間等信息咏连,然后為該請(qǐng)求選擇一個(gè)storage用來(lái)服務(wù)讀請(qǐng)求。由于group內(nèi)的文件同步時(shí)在后臺(tái)異步進(jìn)行的鲁森,所以有可能出現(xiàn)在讀到時(shí)候祟滴,文件還沒有同步到某些storage server上,為了盡量避免訪問到這樣的storage歌溉,tracker按照如下規(guī)則選擇group內(nèi)可讀的storage垄懂。

  • 1、該文件上傳到的源頭storage - 源頭storage只要存活著痛垛,肯定包含這個(gè)文件草慧,源頭的地址被編碼在文件名中。
  • 2匙头、文件創(chuàng)建時(shí)間戳==storage被同步到的時(shí)間戳 且(當(dāng)前時(shí)間-文件創(chuàng)建時(shí)間戳) > 文件同步最大時(shí)間(如5分鐘) - 文件創(chuàng)建后漫谷,認(rèn)為經(jīng)過(guò)最大同步時(shí)間后,肯定已經(jīng)同步到其他storage了蹂析。
  • 3舔示、文件創(chuàng)建時(shí)間戳 < storage被同步到的時(shí)間戳。 - 同步時(shí)間戳之前的文件確定已經(jīng)同步了
  • 4电抚、(當(dāng)前時(shí)間-文件創(chuàng)建時(shí)間戳) > 同步延遲閥值(如一天)惕稻。 - 經(jīng)過(guò)同步延遲閾值時(shí)間,認(rèn)為文件肯定已經(jīng)同步了蝙叛。

同步時(shí)間管理

當(dāng)一個(gè)文件上傳成功后俺祠,客戶端馬上發(fā)起對(duì)該文件下載請(qǐng)求(或刪除請(qǐng)求)時(shí),tracker是如何選定一個(gè)適用的存儲(chǔ)服務(wù)器呢甥温? 其實(shí)每個(gè)存儲(chǔ)服務(wù)器都需要定時(shí)將自身的信息上報(bào)給tracker锻煌,這些信息就包括了本地同步時(shí)間(即,同步到的最新文件的時(shí)間戳)姻蚓。而tracker根據(jù)各個(gè)存儲(chǔ)服務(wù)器的上報(bào)情況宋梧,就能夠知道剛剛上傳的文件,在該存儲(chǔ)組中是否已完成了同步狰挡。同步信息上報(bào)如下圖:

image

寫文件時(shí)捂龄,客戶端將文件寫至group內(nèi)一個(gè)storage server即認(rèn)為寫文件成功,storage server寫完文件后加叁,會(huì)由后臺(tái)線程將文件同步至同group內(nèi)其他的storage server倦沧。

每個(gè)storage寫文件后,同時(shí)會(huì)寫一份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)度作為參考。 比如一個(gè)group內(nèi)有A指么、B酝惧、C三個(gè)storage server,A向C同步到進(jìn)度為T1 (T1以前寫的文件都已經(jīng)同步到B上了)伯诬,B向C同步到時(shí)間戳為T2(T2 > T1)晚唇,tracker接收到這些同步進(jìn)度信息時(shí),就會(huì)進(jìn)行整理姑廉,將最小的那個(gè)做為C的同步時(shí)間戳缺亮,本例中T1即為C的同步時(shí)間戳為T1(即所有T1以前寫的數(shù)據(jù)都已經(jīng)同步到C上了);同理桥言,根據(jù)上述規(guī)則,tracker會(huì)為A葵礼、B生成一個(gè)同步時(shí)間戳号阿。

精巧的文件ID-FID

說(shuō)到下載就不得不提文件索引(又稱:FID)的精巧設(shè)計(jì)了。文件索引結(jié)構(gòu)如下圖鸳粉,是客戶端上傳文件后存儲(chǔ)服務(wù)器返回給客戶端扔涧,用于以后訪問該文件的索引信息。文件索引信息包括:組名届谈,虛擬磁盤路徑枯夜,數(shù)據(jù)兩級(jí)目錄,文件名艰山。

image
  • 組名:文件上傳后所在的存儲(chǔ)組名稱湖雹,在文件上傳成功后有存儲(chǔ)服務(wù)器返回,需要客戶端自行保存曙搬。
  • 虛擬磁盤路徑:存儲(chǔ)服務(wù)器配置的虛擬路徑摔吏,與磁盤選項(xiàng)store_path*對(duì)應(yīng)。
  • 數(shù)據(jù)兩級(jí)目錄:存儲(chǔ)服務(wù)器在每個(gè)虛擬磁盤路徑下創(chuàng)建的兩級(jí)目錄纵装,用于存儲(chǔ)數(shù)據(jù)文件征讲。
  • 文件名:與文件上傳時(shí)不同。是由存儲(chǔ)服務(wù)器根據(jù)特定信息生成橡娄,文件名包含:源存儲(chǔ)服務(wù)器IP地址诗箍、文件創(chuàng)建時(shí)間戳、文件大小挽唉、隨機(jī)數(shù)和文件拓展名等信息滤祖。

快速定位文件

知道FastDFS FID的組成后才避,我們來(lái)看看FastDFS是如何通過(guò)這個(gè)精巧的FID定位到需要訪問的文件。

  • 1氨距、通過(guò)組名tracker能夠很快的定位到客戶端需要訪問的存儲(chǔ)服務(wù)器組桑逝,并將選擇合適的存儲(chǔ)服務(wù)器提供客戶端訪問;
  • 2俏让、存儲(chǔ)服務(wù)器根據(jù)“文件存儲(chǔ)虛擬磁盤路徑”和“數(shù)據(jù)文件兩級(jí)目錄”可以很快定位到文件所在目錄楞遏,并根據(jù)文件名找到客戶端需要訪問的文件。
image

如何搭建FastDFS首昔?參考我博客的這篇文章FastDFS 集群 安裝 配置 寡喝,下圖為某用戶搭建的架構(gòu)示意圖

image

文中圖片均來(lái)源于網(wǎng)絡(luò)

參考

官方網(wǎng)站
配置文檔
Java客戶端
分布式文件系統(tǒng)FastDFS設(shè)計(jì)原理
FASTDFS

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勒奇,隨后出現(xiàn)的幾起案子预鬓,更是在濱河造成了極大的恐慌,老刑警劉巖赊颠,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件格二,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡竣蹦,警方通過(guò)查閱死者的電腦和手機(jī)顶猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痘括,“玉大人长窄,你說(shuō)我怎么就攤上這事「倬” “怎么了挠日?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)翰舌。 經(jīng)常有香客問我嚣潜,道長(zhǎng),這世上最難降的妖魔是什么灶芝? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任郑原,我火速辦了婚禮,結(jié)果婚禮上夜涕,老公的妹妹穿的比我還像新娘犯犁。我一直安慰自己,他們只是感情好女器,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布酸役。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涣澡。 梳的紋絲不亂的頭發(fā)上贱呐,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音入桂,去河邊找鬼奄薇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抗愁,可吹牛的內(nèi)容都是我干的馁蒂。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蜘腌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沫屡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起撮珠,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沮脖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芯急,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勺届,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年志于,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涮因。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伺绽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗜湃,到底是詐尸還是另有隱情奈应,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布购披,位于F島的核電站杖挣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刚陡。R本人自食惡果不足惜惩妇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筐乳。 院中可真熱鬧歌殃,春花似錦、人聲如沸蝙云。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至波材,卻和暖如春股淡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廷区。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工唯灵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隙轻。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓埠帕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親大脉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搞监,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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