操作分佈式文件之四:如何進行集羣內文件複製和並行複製

集羣文件複製是經常面臨的需求,比如備份容災,文件遷移,同步數據等等
FttpAdapter提供了簡單高效的文件複製方法,支持遠程文件的集羣內複製
FttpAdapter fromfile = new FttpAdapter("fttp://10.232.20.151/home/log/a.log");
FttpAdapter tofile = fromfile.copyTo("fttp://10.232.20.154/home/log/a.log",FileAdapter.m(1));
上面代碼代表將a.log文件複製到其他機器並得到相應的文件對象
這裏的copyTo方法的第二個參數,表示複製時,每次以1M的速度傳輸
FileAdapter.m(1) 1M
FileAdapter.g(1) 1G
FileAdapter.k(1) 1k
數字1可以自由設置爲其他數字,copyTo的默認值是每次以1M的速度,可以根據網絡情況調整這個參數,達到最優化。

FttpCopyDemo演示了集羣中兩臺機器間的複製功能。

如果要進行並行複製,可以使用tryCopyTo,它的使用和copyTo一樣,只不過是立即返回一個Result<FttpAdapter>對象,需要檢查Result的getStatus是否複製完成,狀態顯示就緒代表複製已完成,這時可以獲取到複製後的文件對象。

FttpMulCopyDemo演示了將一臺計算機上的a.log文件並行複製到4臺計算機上,並通過結果狀態檢查複製是否完成

下面是內網環境下向4臺機器複製1g文件的測試結果(均爲4核4G內存配置)
內網(並行複製):完成耗時39秒,速度大約是105M/S
內網(串行復制):完成耗時60秒,速度大約是68M/S
由此可以觀察到如果是內網並行複製的速度比串行要快很多
局域網的傳輸數據的極限是100M/S,傳統的串行復制無法超越這個速度,但是並行的傳送總量和花費時間算下來會超過100M/S
外網環境的話受網絡帶寬侷限,速度大約是3.6M/S

郵箱:[email protected]
qq羣:241116021
demo源碼指南及開發包下載地址:
http://www.skycn.com/soft/68321.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章