詳解Rsync和FastDFS的區別與聯繫

概述

在做分佈式文件存儲的時候,常常用到兩個工具,Rsync和FastDFS,今天主要簡單介紹下這兩個的區別。


Rsync架構

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

詳解Rsync和FastDFS的區別與聯繫

Rsync分為客戶端和服務器端,客戶端主要負責和服務器通信,獲取最新的文件;這裡的機制和FastDFS有區別,因為沒有實時性,所以Rsync在同步的時候,會將服務器端所有的文件都比對一遍,發現有變化才會將變化的文件同步過來,如果添加了—delete指令,還會將服務器端刪除的文件在客戶端也刪除;FastDFS因為是實時同步的,所以只要有變化,便會通知各個組內的服務器進行同步,所以他的更新機制不是逐個比對,同步的效率會更高;

詳解Rsync和FastDFS的區別與聯繫

客戶端只有一個配置文件:rsyncd.secrets(文件名和路徑可以自定義,因為是需要客戶端執行的時候作為參數傳遞的),這個配置文件配置了登錄的密碼(只有密碼),用戶名是在指定的時候通過參數指定的;

服務器端有三個配置文件:

  1. Rsyncd.conf:核心的配置文件,這裡面配置了監聽的ip以及port,allow/deny host(客戶端IP),log info,file block(提供同步的文件信息)以及ref files info(下面將要提到的security以及motd文件);
  2. Rsyncd.security:裡面定義了user/pwd鍵值對,用於驗證連接的客戶端身份;可以定義多個;
  3. Rsync.motd:這個文件就是定義客戶端連接服務器端的時候,顯示的友好文字,可以清空或者自定義一些文字;

FastDFS

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

詳解Rsync和FastDFS的區別與聯繫

FastDFS和HDFS最大的差別在於並不會對文件進行切割(切片存儲),所以比較適用於小文件的存儲;FastDFS裡面有兩個核心組件:Tracker Server以及Storage Server,前者用於記錄文件索引,後者用於存儲文件;tracker server和storeage Server是鬆散耦合,如果是擴容物理存儲,只要增加一臺機器,配置稱為storage Server,指向一臺Tracker server,Tracker Server就會記錄新增容的服務器;因為storage將會根據配置的tracker ip以及端口,向Tracker服務器發送通知。

一個storage server裡面可以包含N個Group,每個Group裡面可以包含N個Storage,每個Storage都是一個存儲空間,同一個組內的Storage是互相備份關係,上面也提到了,是那種增量式的備份;一個新的storage首次和tracker通信:

  1. tracker首先會將storage Server List同步給new storage,然後在給其他old storage發送最新的列表,這樣完成了新列表全group內通知,並設置new storage狀態為FDFS_STORAGE_STATUS_INIT;
  2. 接著,tracker將會指定一個old Storage服務器與之同步,並同時這是new storage狀態為FDFS_STORAGE_STATUS_WAIT_SYNC(如果沒有文件需要更新,設置為FDFS_STORAGE_STATUS_ONLINE),一次性將所有的文件同步到new storage上面,同步完畢後,狀態將會設置為FDFS_STORAGE_STATUS_ONLINE;
  3. 同步數據完畢後,new storage首次發送心跳給tracker server的時候,tracker server會將其狀態設置為FDFS_STORAGE_STATUS_ACTIVE;
  4. 一個Group的存儲空間是這一組機器中存儲容量最小的那臺機器;訪問流程是客戶端配置為訪問一臺Tracker,有這臺Tracker來負責跟進文件名來確定分配那一臺機器給客戶單使用,客戶端再向返回的storage server發送文件請求;但是安全性需要考慮;

當你需要獲取/上傳一個文件的時候,首先和tracker進行通信(上傳不需要參數,下載需要提供文件名稱,這個文件名稱是當初上傳的時候有FastDFS生成的),tracker中選擇一個可用的storage返回,然後你在和這個storage服務器通信獲取文件。


其實這兩者本質的區別在於前者的實時性相面相對較差,需要手工編寫腳本同步,然後在放到定時任務(cron)中;FastDFS自動實現同組內機器互備。

後面小編會分享更多devops和DBA方面內容,感興趣的朋友走一波關注哩~

詳解Rsync和FastDFS的區別與聯繫


分享到:


相關文章: