我們把靜態資源檔案儲存在本地伺服器也能正常訪問啊,如放在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...