FastDFS伺服器的介紹與使用(Java)

2021-09-24 13:04:02 字數 3070 閱讀 5400

我們把靜態資源檔案儲存在本地伺服器也能正常訪問啊,如放在tomcat專案資料夾下,也能實現正常的訪問。但是當我們的系統超過1000併發後,需要使用nginx進行伺服器的負載均衡(即使用多個伺服器),使用者訪問就訪問的nginx,nginx將求情**給用於伺服器tomcat,但是有一種情況,張上使用者上傳,nginx分配給伺服器a,然後伺服器tomcat將存在其工程資料夾下,而李四訪問這張的時候,nginx可能將請求**給伺服器b,但是由於存放在伺服器a中,故將發生404錯誤。

上述問題出現在我們沒有把放在同一的乙個位置。

那麼當我們專門使用一台伺服器作為伺服器呢?所有的訪問都找這個專門的伺服器picture。

但是我們也可以使用tomcat作為靜態資源伺服器啊?為什麼使用fastdfs伺服器呢?

原因:這台伺服器的儲存有上限,其擴容性不強。

當這個伺服器滿容量後,若再加乙個伺服器其訪問的url將會相應的發生變化,而且如果這個伺服器掛了,則相應的資料丟失。

使用fastdfs的優點:

使用fastdfs可以實現橫向擴容,如果你的儲存空間不夠了,可以加伺服器,它會對group進行集中管理。其執行在linux下。

其架構圖如下:

服務端兩個角色:

tracker:

storage:

檔案上傳其時序圖:

客戶端上傳檔案後儲存伺服器將檔案id返回給客戶端,此檔案id用於以後訪問該檔案的索引資訊。檔案索引資訊包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。

好了,上面的都是概念介紹,下面實現其檔案的上傳;

@test

public void test() throws exception

}輸出:

當我們需要訪問時,其訪問url為:192.168.25.133/ group1/m00/00/00/wkgzhv0hg-yaqpmpaactd9reep8664.jpg

1.上傳工具類

在我們上傳的時候,由於上述步驟很多步驟都是重複的,我們可以將其封裝後變的簡單一點。

package com.taotao.utils;

import org.csource.common.namevaluepair;

import org.csource.fastdfs.clientglobal;

import org.csource.fastdfs.storageclient1;

import org.csource.fastdfs.storageserver;

import org.csource.fastdfs.trackerclient;

import org.csource.fastdfs.trackerserver;

public class fastdfsclient

clientglobal.init(conf);

trackerclient = new trackerclient();

trackerserver = trackerclient.getconnection();

storageserver = null;

storageclient = new storageclient1(trackerserver, storageserver);

} /**

* 上傳檔案方法

* title: uploadfile

* description:

* @param filename 檔案全路徑

* @param extname 副檔名,不包含(.)

* @param metas 檔案擴充套件資訊

* @return

* @throws exception

*/public string uploadfile(string filename, string extname, namevaluepair metas) throws exception

public string uploadfile(string filename) throws exception

public string uploadfile(string filename, string extname) throws exception

/*** 上傳檔案方法

* title: uploadfile

* description:

* @param filecontent 檔案的內容,位元組陣列

* @param extname 副檔名

* @param metas 檔案擴充套件資訊

* @return

* @throws exception

*/public string uploadfile(byte filecontent, string extname, namevaluepair metas) throws exception

public string uploadfile(byte filecontent) throws exception

public string uploadfile(byte filecontent, string extname) throws exception

}

測試類:

@test

public void testutils() throws exception

fastdfs 檔案伺服器遷移

在實際的專案應用中,由於伺服器替換或專案變更難免會存在fastdfs檔案伺服器遷移的工作。本文重點介紹fastdfs檔案系統在不同情況下的檔案遷移處理方案。通過檔案伺服器儲存規則定義,發現當ip位址沒有發生變化時,這種檔案伺服器遷移是最簡單的,只需要在新的伺服器上安裝fastdfs,把原來伺服器上的...

伺服器介紹

伺服器介紹 一 伺服器的種類 1.機架式伺服器 戴爾 poweredge r7302.塔式伺服器 戴爾 poweredge r730 3.刀片伺服器 戴爾 poweredge r730二 伺服器品牌 1.dell伺服器 dell伺服器的型號 時間 1u 2u 2010年之前 1850 1950 28...

伺服器介紹

運維的職責 資料不能丟 7 24小時執行 保證使用者體驗 使用者體驗要好 運維原則 簡單 易用 高效 簡單 粗暴 伺服器厚度 厚度 伺服器尺寸單位為u 1u 4.45cm 機架式伺服器 刀片式伺服器 塔式伺服器 時間1u 2u2010年以前 1850 1950 28502950 2010年到2013...