最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中文件管理系統(tǒng)FastDFS詳解

 更新時(shí)間:2020年07月27日 10:30:10   作者:程序新視界  
這篇文章主要介紹了Java中文件管理系統(tǒng)FastDFS詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是FastDFS

很多以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等,都需要對(duì)文件進(jìn)行管理,包括文件的存儲(chǔ)、同步、訪問(wèn)(文件上傳、文件下載)等,同時(shí)肯定會(huì)伴隨著大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。

在日常的一些項(xiàng)目中,比如做用戶(hù)的KYC認(rèn)證等,也需要存儲(chǔ)文件、圖片、視頻等。此時(shí)可以選擇使用OSS云服務(wù),也可以自己構(gòu)建相對(duì)專(zhuān)業(yè)的文件管理系統(tǒng)。

FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),用于解決大數(shù)據(jù)量存儲(chǔ)和負(fù)載均衡等問(wèn)題,并需要通過(guò)專(zhuān)有API進(jìn)行訪問(wèn)。滿(mǎn)足大容量文件存儲(chǔ)問(wèn)題,并保證高性能和高擴(kuò)展性。它能夠很好的解決上述提到的業(yè)務(wù)場(chǎng)景。

FastDFS的特性

FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。

優(yōu)點(diǎn):

  • 文件不分塊存儲(chǔ),文件和系統(tǒng)中的文件一一對(duì)應(yīng)。
  • 對(duì)文件內(nèi)容做hash處理,避免出現(xiàn)重復(fù)文件,節(jié)約磁盤(pán)空間。
  • 下載文件支持HTTP協(xié)議,可基于內(nèi)置Web Server或外部Web Server。
  • 支持在線擴(kuò)容,動(dòng)態(tài)添加卷。支持文件冗余備份和負(fù)載均衡。
  • 存儲(chǔ)服務(wù)器上可以保存文件屬性(meta-data)V2.0 網(wǎng)絡(luò)通信采用libevent,支持大并發(fā)訪問(wèn),整體性能更好。

缺點(diǎn):

  • 直接按文件存儲(chǔ),可直接查看文件內(nèi)容,缺乏文件安全性。
  • 數(shù)據(jù)同步無(wú)校驗(yàn),存在靜默IO問(wèn)題,降低系統(tǒng)可用性。
  • 單線程數(shù)據(jù)同步,僅適合存儲(chǔ)小文件(4KB到500MB之間)。
  • 備份數(shù)根據(jù)存儲(chǔ)分卷(分組)決定,缺乏文件備份數(shù)設(shè)置靈活性。
  • 單個(gè)掛載點(diǎn)異常會(huì)導(dǎo)致整個(gè)存儲(chǔ)節(jié)點(diǎn)下線。
  • 缺乏多機(jī)房容災(zāi)支持。
  • 靜態(tài)的負(fù)載均衡機(jī)制。

優(yōu)點(diǎn)與缺點(diǎn)并存,但針對(duì)中小型系統(tǒng)已經(jīng)完全足夠使用了。

FastDFS的角色

初次接觸或部署FastDFS的朋友往往會(huì)有些疑惑,為什么要部署那么多服務(wù)才能使用FastDFS。這是由FastDFS的角色構(gòu)成決定的。

FastDFS系統(tǒng)有三個(gè)角色:跟蹤服務(wù)器(Tracker Server)、存儲(chǔ)服務(wù)器(Storage Server)和客戶(hù)端(Client)。

如果通過(guò)Http訪問(wèn),通常情況下,還需要部署Nginx服務(wù)。

Tracker Server:跟蹤服務(wù)器,主要做調(diào)度工作,起到均衡的作用;負(fù)責(zé)管理所有的storage server和group,每個(gè)storage在啟動(dòng)后會(huì)連接 Tracker,同步自己所屬group等信息,并保持周期性心跳。它是客戶(hù)端和數(shù)據(jù)服務(wù)器交互的樞紐。

Storage Server:存儲(chǔ)服務(wù)器,主要提供容量和備份服務(wù);以group為單位,每個(gè)group內(nèi)可以有多臺(tái)storage server,數(shù)據(jù)互為備份。文件及屬性(Meta Data)都保存在該服務(wù)器上。

Client:客戶(hù)端,上傳下載數(shù)據(jù)請(qǐng)求的發(fā)起方,通過(guò)專(zhuān)有接口,使用TCP/IP協(xié)議與跟蹤器服務(wù)器或存儲(chǔ)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互。

下面通過(guò)一張圖來(lái)看看FastDFS的不同角色在整個(gè)流轉(zhuǎn)過(guò)程中的作用。

上圖中Tracker相當(dāng)于一個(gè)調(diào)度中心,上傳和下載都通過(guò)它來(lái)進(jìn)行分配指定。

上面我們提到Nginx,客戶(hù)端通常會(huì)使用Ngnix等靜態(tài)服務(wù)器來(lái)調(diào)用或者做一部分的緩存。后面搭建環(huán)境時(shí)便是基于Nginx。

Storage cluster部分,由Volume1、Volume2……VolumeK組成,它們稱(chēng)為卷(或者叫做組),卷與卷之間是平行的關(guān)系,可以根據(jù)資源的使用情況隨時(shí)增加,卷內(nèi)服務(wù)器文件相互同步備份,以達(dá)到容災(zāi)的目的。

上傳過(guò)程

當(dāng)服務(wù)啟動(dòng)之后,Storage Server會(huì)定期的向Tracker Server發(fā)送存儲(chǔ)信息。如果Tracker Server是集群形式,則每個(gè)Tracker之間的關(guān)系是對(duì)等的,客戶(hù)端上傳時(shí)選擇任意一個(gè)Tracker即可。

整體流程:當(dāng)客戶(hù)端請(qǐng)求Tracker進(jìn)行上傳操作時(shí),會(huì)獲取存儲(chǔ)服務(wù)器相關(guān)信息,主要包括IP和端口。根據(jù)返回信息上傳文件,通過(guò)存儲(chǔ)服務(wù)器寫(xiě)入磁盤(pán),并返回給客戶(hù)端file_id、路徑信息、文件名等信息。

對(duì)應(yīng)流程圖如下:

其中,當(dāng)Tracker收到客戶(hù)端上傳文件的請(qǐng)求時(shí),會(huì)為該文件分配一個(gè)可以存儲(chǔ)文件的group,當(dāng)選定了group后就要決定給客戶(hù)端分配group中的哪一個(gè)storage server。

當(dāng)分配好storage server后,客戶(hù)端向storage發(fā)送寫(xiě)文件請(qǐng)求,storage將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄。然后為文件分配一個(gè)fileid,最后根據(jù)以上的信息生成文件名存儲(chǔ)文件。

生成的文件名基本格式如下:

下載過(guò)程

跟上傳一樣,在下載時(shí)客戶(hù)端可以選擇任意Tracker server。

客戶(hù)端帶文件名信息請(qǐng)求Tracker,Tracker從文件名中解析出文件的group、大小、創(chuàng)建時(shí)間等信息,然后選擇一個(gè)storage用來(lái)服務(wù)處理請(qǐng)求,返回對(duì)應(yīng)文件。

對(duì)應(yīng)流程圖如下:

如果是基于Web的http請(qǐng)求,此處的Client可以是Nginx代理服務(wù)。下面這張圖更加形象的描述了相關(guān)的流程。

小結(jié)

關(guān)于FastDFS的基本特性和原理已經(jīng)介紹完畢,重點(diǎn)關(guān)注三個(gè)角色和兩個(gè)流程,以及將三個(gè)角色融入到兩個(gè)流程中進(jìn)行分析。明白了這個(gè)大的方向之后,至于執(zhí)行的細(xì)節(jié)部分就可以逐步了解和掌握。

到此這篇關(guān)于Java中文件管理系統(tǒng)FastDFS詳解的文章就介紹到這了,更多相關(guān)Java文件管理系統(tǒng)FastDFS內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP Laravel實(shí)現(xiàn)文件下載功能

    PHP Laravel實(shí)現(xiàn)文件下載功能

    本文重點(diǎn)給大家介紹Laravel實(shí)現(xiàn)文件下載功能的實(shí)例代碼,需要的朋友參考下吧
    2017-09-09
  • 詳解Spring AOP自定義可重復(fù)注解沒(méi)有生效問(wèn)題

    詳解Spring AOP自定義可重復(fù)注解沒(méi)有生效問(wèn)題

    本文主要介紹了Spring AOP自定義可重復(fù)注解沒(méi)有生效問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Hibernate之CRUD操作實(shí)踐

    Hibernate之CRUD操作實(shí)踐

    這篇文章主要介紹了Hibernate之CRUD操作實(shí)踐,本文主要告訴讀者Hibernate是什么,為什么要使用HibernateHibernate的優(yōu)缺點(diǎn),Hibernate的基礎(chǔ)實(shí)例應(yīng)用。需要的朋友可以參考下
    2018-11-11
  • IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法

    IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法

    在學(xué)習(xí)SpringMVC課程中,基于IDEA新建maven項(xiàng)目模塊后,webapp目錄未被標(biāo)識(shí),即沒(méi)有小藍(lán)點(diǎn)的圖標(biāo)顯示,所以本文給大家介紹了IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法,需要的朋友可以參考下
    2024-03-03
  • 一文詳解Java線程中的安全策略

    一文詳解Java線程中的安全策略

    Java中的線程到底有哪些安全策略呢?這篇文章將詳細(xì)為大家分析一下。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05
  • java適配器模式如何讓不兼容的接口變得兼容

    java適配器模式如何讓不兼容的接口變得兼容

    這篇文章主要為大家介紹了java適配器模式如何讓不兼容的接口變得兼容示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • spring data jpa使用詳解(推薦)

    spring data jpa使用詳解(推薦)

    這篇文章主要介紹了spring data jpa使用詳解(推薦),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • java使用poi讀取ppt文件和poi讀取excel、word示例

    java使用poi讀取ppt文件和poi讀取excel、word示例

    這篇文章主要介紹了java使用poi讀取ppt文件和poi讀取excel、word示例,需要的朋友可以參考下
    2014-03-03
  • 利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能

    利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能

    這篇文章主要給大家介紹了關(guān)于如何利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java實(shí)現(xiàn)面板之間切換功能

    java實(shí)現(xiàn)面板之間切換功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)面板之間切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

武邑县| 禄劝| 江川县| 绥化市| 锦屏县| 陈巴尔虎旗| 马关县| 阿拉善右旗| 阿克苏市| 镇平县| 临沧市| 宁武县| 北安市| 华亭县| 基隆市| 沙田区| 库尔勒市| 陇川县| 民乐县| 吉木乃县| 湘乡市| 潼南县| 冷水江市| 汉源县| 万年县| 康保县| 昌吉市| 芦山县| 汉沽区| 巴林左旗| 天祝| 兰考县| 克什克腾旗| 高雄县| 北安市| 德州市| 平和县| 军事| 隆安县| 东台市| 凤翔县|