一、WDT简介
GIT地址:https://github.com/facebook/wdt
WDT(Warp speed Data Transfer),多链路数据传输,基于TCP协议;是FaceBook开源的一个项目,其目的是在尽量减少资源(CPU/内存等)消耗的情况下,利用多个TCP路径提高两个系统之间传送文件的效率。
在传输机制方面,WDT采用了阻塞式线程IO,保证在任何点都会有线程在读和写。这样数据就可以被缓冲在双向传输道路上,使得最小内核/用户空间切换的情况下,每个子系统仍然处于忙碌状态。正是这样的双向传输机制进一步保证了系统吞吐率的最大化。
二、WDT特点
WDT将文件切块,用多个tcp连接传送一个文件,每个tcp连接传送不同的文件块。
如果A点和B点间一个tcp连接的速率是S,理论上如果链路容量足够大,n个tcp连接的速率为n* S。
WDT通常采用20-30个线程,每个线程一个tcp连接,如果要发送的文件足够大,就可以切成多个块,达到wget(单个tcp连接传送文件)数倍的速率。
三、 WDT限制
只能传送文件,不能做到对应用透明,无法用wdt传输http等协议的数据。
WDT对大文件效果好,对小文件作用有限。因为对小文件切块会导致切分组合等操作的成本相对过大,速率反而不如用一个tcp连接传输小文件。
WDT对吞吐率敏感的场景效果好,对响应时间敏感的场景作用有限。因为序号靠前的文件块并不优先传送,甚至可能因为和序号靠后的文件块争抢链路带宽而变慢。
四、WDT使用
服务端:
yum install wdt
cat /etc/sysconfig/wdt
directory=/mnt //需要本机加速的目录
transfer_id=letv //传输秘钥
start_port=22357 //监听的数据接收端口
/etc/init.d/wdtstart
客户端:
yum install wdt
调整wdtc传输脚本,调整日志输出级别
客户端数据传输指令:指定传输本机的/soft目录到ip:xxx.xxx.xxx.xxx,xxxx为服务端配置的秘钥
wdtc /soft xxx.xxx.xxx.xxx xxxx
五、WDT测试
1、内网对比测试:
2、海外对比测试:
测试环境:虚拟机普通配置
测试方法:WDT加速传输和scp普通传输,每次测试传输一个大文件
传输文件:3.2GB的系统iso镜像文件
统计方法:同一时间段,三次传输取平均值
测试结果:
1) 2016.3.16 周三(12:00 –21:00)
2) 2016.3.17 周四(10:00 –14:00)