最近公司想要給內網使用的系統搭建一套靜態資源服務,要求能夠海量儲存資料,並且能夠快速檢索,支援f分布式集群部署,主從備份等特性;並且支援檔案的斷點傳輸,檔案的合併儲存,碎片管理;旭之前沒有接觸太多關於相關的中介軟體;但是公司在選型上已經定了fastdfs,於是旭開始了大量學習和搭建,過程也有了不少的體會,最後搭建出了符合公司業務場景使用的檔案管理服務;最近有時間把過程中的東西整理一下。旭學任何東西都有乙個習慣2w1h what why how。
以上是人們對fastdfs最常用的描述了。我i的理解fastdfs為甚麼會受到大量的使用和推崇,因為它很好的解決了網際網路場景下的幾個痛點問題:
1.分布式檔案系統,支援集群部署,分布式意味著不受限於物理機和虛擬機器的瓶頸的影響,能夠把效能瓶頸分攤到集群節點;把 儲存分散到各個集群節點解決海量儲存的問題;能夠很好很容易很靠譜的進行線性擴容這點非常重要,這樣使用者可以根據使用量快速靠譜的進行按需擴容和收縮;
2.支援主從備份,這意味著不再擔心檔案的丟失和單個節點損壞帶來的損失;
3.對於面向c端的網際網路產品使用者,流量就是上帝,能夠支援海量使用者的訪問,並且速度和穩定性經的起考驗這點非常重要;fastdfs的從設計上考慮到這點,非常注重高可用,負載均衡這一點。(tracker)能夠把流量很均勻的分配到各個節點(storage),乙個節點掛了能夠完全無感知的切換到另外乙個服務。
理論不講太多直接講下我的實踐:在實踐中我使用設計了三套架構方案:
元件說明:名稱
說明centos
7.x(安裝系統)
libfastcommon
fastdfs分離出的一些公用函式包
fastdfs
fastdfs
fastdfs-nginx-module
nginx 1.12.2(centos 7 下yum可以安裝的最新版本)
單機版架構:
服務ip
埠元件備註tracker
172.16.6.1
22122
fastdfs,libfastcommon
/usr/local/tracker
storage
172.16.6.1
23000
fastdfs,libfastcommon,nginx,fastdfs-nginx-module
資料:/home/dfs/storage 安裝:/usr/local/storage
nginx
172.16.6.1
80nginx
/usr/local/nginx
單機版集群:
服務ip
埠元件備註tracker1
172.16.6.1
22122
fastdfs,libfastcommon
/usr/local/tracker
tracker2
172.16.6.1
22123
fastdfs,libfastcommon
/usr/local/tracker
storage1
172.16.6.1
23000
fastdfs,libfastcommon,nginx,fastdfs-nginx-module
資料:/home/dfs/storage1 安裝:/usr/local/storage
storage2
172.16.6.1
23001
fastdfs,libfastcommon,nginx,fastdfs-nginx-module
資料:/home/dfs/storage2 安裝:/usr/local/storage
nginx
172.16.6.1
80nginx
/usr/local/nginx
多服務集群版:
服務ip
埠元件備註tracker1
172.16.6.157
22122
fastdfs,libfastcommon
安裝:/usr/local/src/fdfs/tracker,資料:/home/project/fdfs/tracker,配置:/etc/fdfs/tracker.conf
tracker2
172.16.6.158
22122
fastdfs,libfastcommon
安裝:/usr/local/src/fdfs/tracker,資料:/home/project/fdfs/tracker,配置:/etc/fdfs/tracker.conf
storage1
172.16.6.159
23000
fastdfs,libfastcommon,nginx,fastdfs-nginx-module
資料:/home/project/fdfs/storage 安裝:/usr/local/fdfs/storage,配置:/etc/fdfs/storage.conf
storage2
172.16.6.161
23000
fastdfs,libfastcommon,nginx,fastdfs-nginx-module
資料:/home/project/fdfs/storage 安裝:/usr/local/fdfs/storage,配置:/etc/fdfs/storage.conf
nginx1
172.16.6.159
80nginx,keepalive,fastdfs-nginx-module
/usr/local/nginx,/etc/keepalive/keepalive.conf
nginx2
172.16.6.161
80nginx,keepalive,fastdfs-nginx-module
/usr/local/nginx,/etc/keepalive/keepalive.conf
vip172.16.6.180
80nginx
/usr/local/nginx
上面是針對不同的場景使用的搭建服務,如果只是想先嘗試體驗下fastdfs的話可以使用第一套單機版,來了解下fastdfs
如果要投入到生產使用,如果只是乙個小型的系統單機集群也是可以滿足的。如果是針對大型的網際網路產品可以使用第三套多服務集群,當然這個只是一種思路還有,真正要到大型商用的話這個方案還要做很多的調整比如災備方案,多機房問題等。
下一章將會提供詳細的部署文件。
實戰day04(一) FastDFS的架構
一 課程計畫 1 上傳 a 伺服器fastdfs b 上傳功能實現 2 富文字編輯器的使用kindeditor 類似於 word 的東西 3 商品新增功能完成 實現可擴容 這台伺服器存滿了,可以換一台伺服器 和高可用 這個伺服器掛了,其他的伺服器可以頂上 1 儲存空間可擴充套件。實現可擴容 這台伺服...
我的架構經驗小結(一) 常用的架構模型
經過這幾年的積累,在系統架構方面逐漸積累了一些自己的經驗,到今天有必要對這些經驗作個小結。在我的架構思維中,主要可以歸類為三種架構模型 3 n層架構 框架 外掛程式 架構 地域分布式架構。這是經典的多層架構模型,對於稍微複雜一點或特別複雜的系統,不使用分層架構是很難想象的。下圖是經典的3層架構 如今...
android 應用架構隨筆一(架構搭建)
1 拷貝積累utils以及pagertab類 3 定義baseactivity類 4 改寫mainactivity 5 定義布局檔案 6 定義basefragment類 7 定義fragmentfactory類 8 定義fragmentfactory類 9 定義子頁fragment 10 定義thr...