當前位置:首頁 » 網頁前端 » web和fastdfs集群
擴展閱讀
sql聯系人查詢 2022-08-18 07:09:14
iisasp資料庫寫入 2022-08-18 07:09:07
雲存儲與價值鏈 2022-08-18 07:07:10

web和fastdfs集群

發布時間: 2022-06-27 14:50:01

❶ 初次接觸fastdfs,請問一個組兩台伺服器怎麼配置http

目前FastDFS支持類Unix系統 ,在Linux和FreeBSD下測試過,本文使用的是Ubuntu10.4,建議安裝之前先簡單了解一下FastDFS的原理 ,這對後繼的配置部分會有很好的理解。
一、准備工作-安裝libevent
FastDFS 內部綁定了 libevent 作為 http 伺服器 ,在V2.X版本必須安裝 libevent ,本文安裝的是V2.2版本,因此必須安裝libevent。(官方也推薦使用 http 方式下載 文件 )

如果已經安裝了 libevent,請確認安裝路徑是 /usr , 因為 FastDFS 在編譯源程序時,需要到此目錄下查找一些依賴文件,否則編譯 FastDFS 會出錯 。如果不是,建議首先卸載 libevent ,然後安裝到 /usr 下。Ubuntu10.4默認是安裝了libevent,可以到軟體中心卸載掉然後按照下面介紹的方式安裝。

安裝步驟:
解壓 libevent ,然後進入解壓後的目錄分別執行:
Shell代碼
./configure --prefix=/usr
make clean;
make
make install
安裝libevent完成。

二、安裝 FastDFS
1、下載 FastDFS 源程序

2、在 FastDFS_v4.05.tar.gz 所在文件夾下執行:
Shell代碼
sudo tar vxzf FastDFS_v4.05.tar.gz /home/soar/FastDFS
註: /home/soar/FastDFS 也可以是其他目錄,記住這是解壓目錄,以後用 %FastDFS% 表示)

3、由於要使用內置的 http 服務,因此編輯 %FastDFS%/make.sh 文件,找到
#WITH_HTTPD=1
修改成
WITH_HTTPD=1
以支持 http

4、進入 %FastDFS% 目錄,執行:
Shell代碼
sudo ./make.sh

5、在 %FastDFS% 目錄下,執行:
Shell代碼
sudo ./make.sh install

如果運行如上命令後,在命令行信息最後看到類似
Shell代碼
#ln -fs /usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
#ln -fs /usr/local/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so
sh ./fdfs_link_library.sh

恭喜你,已經安裝成功了!

FastDFS的配置文件在%FastDFS%/conf目錄下,其中包括
Client.conf 客戶端上傳配置文件
Storage.conf 文件存儲伺服器配置文件
Tracker.conf 負責均衡調度伺服器配置文件
http.conf http伺服器配置文件

配置文件需要根據伺服器環境的不同,進行不同的配置,具體可以參考FastDFS官方的安裝配置文檔,以及FastDFS原理介紹文檔

在本例中,Tracker Server,Storage Server都安裝在一台伺服器上,IP:10.0.2.15
1、配置及啟動Tracker Server
A、修改%FastDFS%/conf/tracker.conf文件,修改如下
#可以自己指定目錄位置,但目錄必須存在,用於存儲日誌及storage server等信息,否則tracker server無法啟動
Txt代碼
base_path=/home/yuqing/fastdfs -> base_path=/home/soar/fastdfs_tracker
#改成你想要的http埠,將來http下載文件的埠就是他了
Txt代碼
http.server_port=8080 -> http.server_port=8090
#http支持
Txt代碼
##include http.conf -> #include http.conf
#默認4GB,如果空間不足,建議調小,否則會報no free space的異常,無法正常啟動
Txt代碼
reserved_storage_space = 4GB -> reserved_storage_space = 1GB
#tracker server對storage server供服務的埠,使用默認的即可,也可以自定義
Txt代碼
port=22122

B、將http.conf文件拷貝到/etc/fdfs目錄下,執行
Shell代碼
sudo cp %FastDFS%/conf/http.conf /etc/fdfs/
註:為了支持http,必須將這個文件拷貝到此目錄,否則無法啟動,報param http.XXX not exist or is empty類似的錯誤

C、進入/usr/local/bin/目錄,啟動tracker伺服器,執行
Shell代碼
sudo fdfs_trackerd %FastDFS%/conf/tracker.conf

D、進入/home/soar/fastdfs_tracker/logs/trackerd.log查看tracker的啟動日誌,如果看到類似
Shell代碼
[2010-11-04 16:21:25] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_tracker, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s
[2010-11-04 16:21:25] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html

恭喜你,tracker server已經啟動成功!
2、配置及啟動Storage Server
A、修改%FastDFS%/conf/storage.conf文件,修改如下:
#可以自定義,但必須存在此目錄,用於存儲storage相關的log、group內的相關信息
Txt代碼
base_path=/home/yuqing/fastdfs -> /home/soar/fastdfs_storge
#文件的存儲位置,在一台storage server上可以指定多個存儲位置
Txt代碼
store_path0=/home/yuqing/fastdfs -> store_path0=/home/soar/fastdfs_storge
#必須指定
Txt代碼
group_name=group1
#修改成tracker server的IP和埠信息
Txt代碼
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
#http支持
Txt代碼
##include http.conf ->#include http.conf

B、進入/usr/local/bin/目錄,啟動storage伺服器,執行
Shell代碼
sudo fdfs_storaged %FastDFS%/conf/storage.conf

C、進入/home/soar/fastdfs_tracker/logs/storage.log查看storage伺服器啟動日誌,如果看到類似
Shell代碼
[2010-11-04 16:37:16] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_storge, store_path_count=1, subdir_count_per_path=256, group_name=group1, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=200ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=60s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_plicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
[2010-11-04 16:37:16] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
[2010-11-04 16:37:16] INFO - file: storage_param_getter.c, line: 48, storage_ip_changed_auto_adjust=1
[2010-11-04 16:37:19] INFO - file: tracker_client_thread.c, line: 274, successfully connect to tracker server 10.0.2.15:22122, as a tracker client, my ip is 10.0.2.15

恭喜你,storage server已經啟動成功!

經過前面的安裝、配置、啟動,馬上就可以看到FastDFS的效果了,我們先上傳一個文件,然後再通過http下載。
一、上傳文件
FastDFS安裝包中,自帶了客戶端程序,通過程序可以進行文件上傳。在使用這個客戶端程序之前,首先需要配置client.conf,然後再進行文件上傳及下載。

1、修改%FastDFS%/conf/client.conf文件,修改如下:
#可自定義,但此目錄必須存在,用於存放文件上傳log
Txt代碼
base_path=/home/yuqing/fastdfs-> base_path=/home/soar/fastdfs_tracker
Txt代碼
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
Txt代碼
http.tracker_server_port=8080 ->http.tracker_server_port=8090
#支持http
Txt代碼
##include http.conf ->#include http.conf

2、進入/usr/local/bin/目錄,上傳文件,執行
Txt代碼
sudo fdfs_test %FastDFS%/conf/client.conf upload a.txt
註:a.txt可以在/usr/local/bin/目錄下自己創建一個

如果命令行反饋類似如下:

則說明上傳文件成功。

關於fastdfs集群和備份配置

1、修改tracker.conf文件中store_lookup=2 平衡負載

2、修改tracker.conf文件中store_server=0 採用輪詢方式。

如果希望只使用一台文件存儲伺服器,其他二台做備份,則修改文件tracker_server為某台主機的IP,只啟動文件存儲伺服器的tracker,其他二台備份伺服器不需要啟動tracker。

如果希望三台伺服器集群使用,互相備份,比如:使用A機器存儲文件,這時候A機器會將文件同步到B機器和C機器,同理使用B機器存儲文件,則會同時將文件同步到A機器和C機器。這時候需要將所有的機器IP和埠號

都配置在storage.conf中,如下所示:
tracker_server=10.207.16.127:22122
tracker_server=10.207.16.129:22122

❷ fastDFS求助,2個問題

回復 1# temp_hacker >>請問,如果現在開始使用FastDHT,它會自動去記錄以前在FastDFS上存儲的文件信息嗎?不會的。>>如果不能,有沒有辦法讓FastDHT去記錄以前的存儲在FastDFS上的文件呢?謝謝!如果你要自定義文件ID,可以使用定製一套client API:my-fastdfs-client。文件ID映射就是保存到FastDHT中的。如果以前已經上傳了一些文件,需要你自己做個數據遷移或者重建文件ID映射。

❸ fastdfs java 怎麼使用

importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.HashMap;
importjava.util.Map;

importorg.apache.commons.io.FilenameUtils;
importorg.apache.log4j.Logger;
importorg.csource.common.MyException;
importorg.csource.fastdfs.ClientGlobal;
importorg.csource.fastdfs.StorageClient;
importorg.csource.fastdfs.TrackerClient;
importorg.csource.fastdfs.TrackerServer;
importorg.springframework.core.io.ClassPathResource;
importorg.springframework.core.io.Resource;


publicclassFastdfsUtils{

/**fdfs初始化文件路徑**/
privateResourcer=newClassPathResource("fdfs_client.properties");

/**日誌**/
=Logger.getLogger(FastdfsUtils.class);

/**
*文件上傳
*@throwsMyException
*@throwsIOException
*@throwsFileNotFoundException
*/
publicMap<String,String>fileUpLoad(booleanisEmpty,InputStreaminputStream,StringfileName)
throwsException{
Map<String,String>map=newHashMap<String,String>();
if(isEmpty){
thrownewException("");
}
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);

byte[]file_buff=null;
if(inputStream!=null){
file_buff=newbyte[inputStream.available()];
inputStream.read(file_buff);
}
String[]results=storageClient.upload_file(file_buff,
FilenameUtils.getExtension(fileName),null);
if(results==null){
thrownewException("");
}
map.put("fileType",FilenameUtils.getExtension(fileName));
map.put("original",fileName);
map.put("url",results[0]+"/"+results[1]);
map.put("state","SUCCESS");
map.put("groupName",results[0]);
map.put("fileName",results[1]);
returnmap;
}

/**
*文件下載
*/
publicbyte[]fileDownLoad(StringgroupName,StringfileName)throwsIOException,MyException{
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);
byte[]fileBytes=storageClient.download_file(groupName,fileName);

returnfileBytes;
}

/**
*文件刪除
*/
publicvoidfileDelete(StringgroupName,StringfileName)throwsFileNotFoundException,
IOException,MyException{
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);
storageClient.delete_file(groupName,fileName);
}
}

❹ 有了cdn為什麼還要用fastdfs

因為cdn的速度與fastdfs相差並不是很大,但是價格卻十分昂貴,所以相同情況下,企業都會選擇使用fastdfs分布式文件系統。

❺ fastdfs 和hdfs的區別

主要是定位和應用場合不一樣。
hadoop的文件系統HDFS主要解決並行計算中分布式存儲數據的問題。其單個數據文件通常很大,採用了分塊(切分)存儲的方式;
FastDFS主要用於大中網站,為文件上傳和下載提供在線服務。所以在負載均衡、動態擴容等方面都支持得比較好,FastDFS不會對文件進行分快(切分)存儲。

❻ 有哪些Java web里的並發框架,都有哪些

一、並發是一種需求,以下先介紹一下javaweb對於高並發的處理思路:

1、synchronized 關鍵字

可用來給對象和方法或者代碼塊加鎖,當它鎖定一個方法或者一個代碼塊的時候,同一時刻最多隻有一個線程執行這段代碼。可能鎖對象包括: this, 臨界資源對象,Class 類對象

2、同步方法

同步方法鎖定的是當前對象。當多線程通過同一個對象引用多次調用當前同步方法時, 需同步執行。

3、同步代碼塊

同步代碼塊的同步粒度更加細致,是商業開發中推薦的編程方式。可以定位到具體的同步位置,而不是簡單的將方法整體實現同步邏輯。在效率上,相對更高。

A)鎖定臨界對象

同步代碼塊在執行時,是鎖定 object 對象。當多個線程調用同一個方法時,鎖定對象不變的情況下,需同步執行。

B)鎖定當前對象

4、鎖的底層實現

Java 虛擬機中的同步(Synchronization)基於進入和退出管程(Monitor)對象實現。同步方法 並不是由 monitor enter 和 monitor exit 指令來實現同步的,而是由方法調用指令讀取運行時常量池中方法的 ACC_SYNCHRONIZED 標志來隱式實現的。

5、鎖的種類

Java 中鎖的種類大致分為偏向鎖,自旋鎖,輕量級鎖,重量級鎖。

鎖的使用方式為:先提供偏向鎖,如果不滿足的時候,升級為輕量級鎖,再不滿足,升級為重量級鎖。自旋鎖是一個過渡的鎖狀態,不是一種實際的鎖類型。

鎖只能升級,不能降級。

6、volatile 關鍵字

變數的線程可見性。在 CPU 計算過程中,會將計算過程需要的數據載入到 CPU 計算緩存中,當 CPU 計算中斷時,有可能刷新緩存,重新讀取內存中的數據。在線程運行的過程中,如果某變數被其他線程修改,可能造成數據不一致的情況,從而導致結果錯誤。而 volatile 修飾的變數是線程可見的,當 JVM 解釋 volatile 修飾的變數時,會通知 CPU,在計算過程中, 每次使用變數參與計算時,都會檢查內存中的數據是否發生變化,而不是一直使用 CPU 緩存中的數據,可以保證計算結果的正確。

更多、此外還有很多細節需要通過學習去了解和完善,此處就不一一列舉了。

二、並發框架

並發框架很多,如ExecutorService、RxJava、Disruptor、Akka等,具體選擇哪個(或者都不選擇)是根據項目需求選擇的,框架本身的差異並不大,基本都是如下模式

❼ 求助fastdfs遷移數據的問題

回復 6# guliny FastDFS集群整體遷移的問題。如果新舊IP地址一一對應,而且是一樣的,那非常簡單,直接將data目錄拷貝過去即可。IP不一樣的話,會比較麻煩一些。如果使用了V4的自定義server ID特性,那麼比較容易,直接將tracker上的IP和ID映射文件storage_ids.conf修改好即可。如果是用IP地址作為伺服器標識,那麼需要修改tracker和storage的data目錄下的幾個數據文件,將舊IP調整為新IP。注意storage的data目錄下有一個.打頭的隱藏文件也需要修改。另外,需要將後綴為mark的IP地址和埠命名的同步位置記錄文件名改名。文件全部調整完成後才能啟動集群服務。tracker server上需要調整的文件列表:data/storage_groups_new.datdata/storage_servers_new.datdata/storage_sync_timestamp.datstorage server需要調整的文件列表:data/.data_init_flagdata/sync/${ip_addr}_${port}.mark:此類文件,需要將文件名中的IP地址調整過來。

❽ fastdfs 埠必須跟網站分開嗎

是可以不分開的。

可以按照下面的步驟來進行操作:

解決方案1:

fdfs_storaged.service - LSB: FastDFS storage server
Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged)
Active: active (exited) since Fri 2016-07-08 15:53:03 CST; 18min ago
Docs: man:systemd-sysv-generator(8)
Process: 26569 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS)

解決方案2:

查日誌,啟動狀態異常。

❾ web後端開發需要什麼技術

HTML5開發,PHP技術開發後端,依次學習和掌握:前端的基礎知識(html div+css ),php基礎知識(面向過程)及mysql資料庫 ,javascript、jQuery的相關知識等,php高級部分(面向對象)及pdo數據處理,php特級部分(框架的應用)等。

❿ web 圖片獨立域名存儲後 上傳文件 文件存儲系統一般都用那個(nfs ,fastdfs ,tfs等 )都有什麼優缺點

看環境,如是網路、本地、或者USB等,設備,,,,,,,然後選擇穩定、可靠的方式