1. 程式人生 > >FastDFS源碼學習(一)FastDFS介紹及源碼編譯安裝

FastDFS源碼學習(一)FastDFS介紹及源碼編譯安裝

進行 開源 monitor html ref _id 軟連接 itl 教程

FastDFS是淘寶的余慶主導開發的一個分布式文件系統,采用C語言開發,性能較優。在淘寶網、京東商城、支付寶和某些網盤等系統均有使用,使用場景十分廣泛。

下圖來源:https://blog.csdn.net/kyriehe/article/details/52431495

技術分享圖片
目前這個系統的源碼已在github上開源。
編譯FastDFS需要下載以下源碼:
FastDFS,下載地址:https://github.com/happyfish100/fastdfs
libfastcommon,下載地址:https://github.com/happyfish100/libfastcommon
本筆記(教程)采用如下環境進行編譯學習,為了保證代碼的一致性,建議在同等環境下進行編譯學習。系統沒有太大的更新,本教程均具有參考價值。
FastDFS版本:fastdfs-5.11.tar.gz
libfastcommon版本:libfastcommon-1.0.39.tar.gz
libfastcommon庫編譯安裝


1.解壓libfastcommon,進入目錄,執行./make.sh進行編譯libfastcommon
2.執行./make.sh install 進行安裝libfastcommon
安裝時將頭文件拷貝到/usr/include/fastcommon目錄下,動態庫libfastcommon.so拷貝到/usr/lib目錄下。創建/usr/lib64/libfastcommon.so的軟連接
啟示:我們自己也可以編寫動態庫,把接口預留出來(即include中的頭文件)供其他開發人員使用。本項目的libfastcommon庫在原作者(余慶)的fastdht系統中也有使用。本lib庫是將項目中的基礎模塊提取出來形成的一個基礎庫,供系統調用使用,這個庫在其他系統中也能發揮很大的作用
fastdfs編譯安裝

1.解壓fastdfs,進入目錄,執行./make.sh進行編譯fastdfs
2.執行./make.sh install 安裝fastdfs
安裝時將配置文件:client.conf.sample、tracker.conf.sample、storage_ids.conf.sample、storage.conf.sample拷貝到/etc/fdfs/目錄下。
將可執行程序文件:fdfs_trackerd、fdfs_storaged、fdfs_monitor、fdfs_test、fdfs_test1、fdfs_crc32、fdfs_upload_file、fdfs_download_file、fdfs_delete_file、fdfs_file_info、fdfs_appender_test、fdfs_appender_test1、fdfs_append_file、fdfs_upload_appender拷貝到/usr/bin目錄下
重要文件解釋
:實際使用時將.sample去掉。
client.conf.sample 客戶端配置文件,主要配置client日誌目錄,tracker服務器地址
tracker.conf.sample 配置tracker日誌。
storage.conf.sample 存儲服務器配置文件,主要配置日誌目錄,數據存儲目錄,tracker服務器地址
整個系統中的重點是tracker服務器,storage需要tracker去發現。client去請求,都是要經過tracker服務器。
該系統有以下優秀策略,將嘗試在後續的代碼分析中體現出來
1.一個group內文件互為備份,即鏡像服務器,上傳/下載文件輪詢策略,指定特定storage服務器上傳/下載策略。上傳後,同group的服務器互相備份數據。
2.多個group存儲策略可配置,有輪詢策略,剩余空間大優先等策略。
3.小文件合並存儲功能(將多個小文件合並成一個大文件存儲,主要應對小文件inode限制導致inode資源不夠)
4.後續使用中發現的其他功能。
由於本教程僅作個人學習分析,沒有實際生產環境的支持,未免有失偏頗。還望同行不吝賜教。
參考資料:
http://bbs.chinaunix.net/thread-1920470-1-1.html FastDFS FAQ
https://blog.csdn.net/kyriehe/article/details/52431495 分布式存儲fastDFS

FastDFS源碼學習(一)FastDFS介紹及源碼編譯安裝