在作分佈式文件存儲的時候,經常用到兩個工具,Rsync和FastDFS;這二者本質的區別在於前者的實時性相面相對較差,須要手工編寫腳本同步,而後在放到定時任務(cron)中;FastDFS自動實現同組內機器互備; 安全
Rsync分爲客戶端和服務器端,客戶端主要負責和服務器通訊,獲取最新的文件;這裏的機制和FastDFS有區別,由於沒有實時性,因此Rsync在同步的時候,會將服務器端全部的文件都比對一遍,發現有變化纔會將變化的文件同步過來,若是添加了—delete指令,還會將服務器端刪除的文件在客戶端也刪除;FastDFS由於是實時同步的,因此只要有變化,便會通知各個組內的服務器進行同步,因此他的更新機制不是逐個比對,同步的效率會更高; 服務器
客戶端只有一個配置文件:rsyncd.secrets(文件名和路徑能夠自定義,由於是須要客戶端執行的時候做爲參數傳遞的),這個配置文件配置了登陸的密碼(只有密碼),用戶名是在指定的時候經過參數指定的; 架構
服務器端有三個配置文件: tcp
有一點須要注意,就是須要服務器點打開873端口(默認Rsync監聽端口) 分佈式
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT 工具
FastDFS是我國的淘寶工程師開發的,是屬於輕量級的分佈式文件系統;實現物理存儲的水平擴展,他和HDFS最大的差異在於並不會對文件進行切割(切片存儲),因此比較適用於小文件的存儲;FastDFS裏面有兩個核心組件:Tracker Server以及Storage Server,前者用於記錄文件索引,後者用於存儲文件;tracker server和storeage Server是鬆散耦合,若是是擴容物理存儲,只要增長一臺機器,配置稱爲storage Server,指向一臺Tracker server,Tracker Server就會記錄新增容的服務器;由於storage將會根據配置的tracker ip以及端口,向Tracker服務器發送通知,I'm in! spa
一個storage server裏面能夠包含N個Group,每一個Group裏面能夠包含N個Storage,每一個Storage都是一個存儲空間,同一個組內的Storage是互相備份關係,上面也提到了,是那種增量式的備份;一個新的storage首次和tracker通訊: server
當你須要獲取/上傳一個文件的時候,首先和tracker進行通訊(上傳不須要參數,下載須要提供文件名稱,這個文件名稱是當初上傳的時候有FastDFS生成的),tracker中選擇一個可用的storage返回,而後你在和這個storage服務器通訊獲取文件。blog