tsunami-udp 是一款專爲網絡加速誕生的小工具。 思路很簡單,使用TCP進行傳輸控制、用UDP進行數據傳輸。git
這樣能夠無狀態的進行數據傳輸,而後中間加一些文件校驗和重傳機制,達到加速傳輸的目的。github
傳統的tcp傳統,基於長鏈接,很容易受網絡波動的影響。特別是網絡擁塞的狀況下,只能經過多進程/線程來進行有序傳輸。數據庫
建議將 tsunami-udp 錄入倉庫,方便用yum一鍵安裝:服務器
sudo yum -y install tsunami-udp
安裝完成後,在服務端(數據源)須要傳文件的目錄,運行tsunamid *
便可:網絡
cd /data tsunamid *
客戶端(執行下載的機器)進入到對應的存儲目錄,執行tsunami
便可:tcp
cd /data tsunami > connect your.server.address # 鏈接服務端(下載源) > get file-name # 下載指定的文件
上圖即,在中國濟南的一個聯通機房下載AWS新加坡機器上‘2.2G autodatas.tar’的文件,跨國傳輸速度接近 50Mbps (無專線)。 圖中還顯示了詳細的過程數據,好比丟了多少包、總傳輸量、有效的傳輸量 等等…… 使用超簡單吧!工具
對比使用wget下載的測試結果:測試
另外,客戶端雖然不支持子目錄的遍歷功能,但若知道全路徑,是能夠直接下載:ui
更爽快點,直接用命令行執行下載,這樣就不須要人工交互啦:url
tsunami connect demo.tsunami-udp.cmcm set udpport 51031 get mnt/d2/file4download quit
注意:和Linux自帶的ftp命令行同樣,按Ctrl + Backspace
纔是刪除。須要人肉轉義一下
使用AWS新加坡的服務器做爲數據庫,傳輸過程CloudWatch監控的流量:
客戶端在濟南聯通,對應的資源使用狀況以下圖:
另外,簡單記錄RPM打包過程。使用fpm打包最簡單了:
wget 'https://github.com/cheetahmobile/tsunami-udp/archive/1.8.1.tar.gz' -O ~/rpmbuild/SOURCES/tsunami-udp-1.8.1.tgz tar -zxvf tsunami-udp-1.8.1.tgz cd tsunami-udp-1.8.1 ./recompile.sh mkdir -pv /tmp/usr/bin cp -fv server/tsunamid client/tsunami /tmp/usr/bin/ fpm -f -s dir -t rpm -n tsunami-udp --epoch 1 -v 1.8.1018 --iteration 1.el6 -C /dev/shm -p ~/rpmbuild/RPMS/x86_64/ -d 'glibc >= 2.12' --verbose --category 'System Environment/Daemons' --description ' A fast user-space file transfer protocol that uses TCP control and UDP data for transfer over very high speed long distance networks' --url 'https://github.com/cheetahmobile/tsunami-udp' --license 'BSD' -m 'higkoo' --no-rpm-sign --workdir /tmp usr/bin file ~/rpmbuild/RPMS/x86_64/tsunami-udp-1.8.1018-1.el6.x86_64.rpm # 大功告成