专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
InfoQ架构头条  ·  新旧交替:AI 时代架构师的进阶之路 ... ·  4 天前  
51好读  ›  专栏  ›  运维帮

大文件传输利器WDT,跨网、跨国效果非常赞

运维帮  · 公众号  · 运维  · 2017-08-04 17:09

正文


一、WDT简介


GIT地址:https://github.com/facebook/wdt

WDT(Warp speed Data Transfer),多链路数据传输,基于TCP协议;是FaceBook开源的一个项目,其目的是在尽量减少资源(CPU/内存等)消耗的情况下,利用多个TCP路径提高两个系统之间传送文件的效率。

在传输机制方面,WDT采用了阻塞式线程IO,保证在任何点都会有线程在读和写。这样数据就可以被缓冲在双向传输道路上,使得最小内核/用户空间切换的情况下,每个子系统仍然处于忙碌状态。正是这样的双向传输机制进一步保证了系统吞吐率的最大化。


二、WDT特点


  1. WDT将文件切块,用多个tcp连接传送一个文件,每个tcp连接传送不同的文件块。

  2. 如果A点和B点间一个tcp连接的速率是S,理论上如果链路容量足够大,n个tcp连接的速率为n* S。

  3. WDT通常采用20-30个线程,每个线程一个tcp连接,如果要发送的文件足够大,就可以切成多个块,达到wget(单个tcp连接传送文件)数倍的速率。

 

三、   WDT限制


  1. 只能传送文件,不能做到对应用透明,无法用wdt传输http等协议的数据。

  2. WDT对大文件效果好,对小文件作用有限。因为对小文件切块会导致切分组合等操作的成本相对过大,速率反而不如用一个tcp连接传输小文件。

  3. WDT对吞吐率敏感的场景效果好,对响应时间敏感的场景作用有限。因为序号靠前的文件块并不优先传送,甚至可能因为和序号靠后的文件块争抢链路带宽而变慢。

 

四、WDT使用

服务端:

  1. yum install wdt

  2. cat /etc/sysconfig/wdt

    directory=/mnt //需要本机加速的目录

    transfer_id=letv //传输秘钥

    start_port=22357 //监听的数据接收端口

  3.  /etc/init.d/wdtstart


客户端:

  1. yum install wdt

  2. 调整wdtc传输脚本,调整日志输出级别

  3. 客户端数据传输指令:指定传输本机的/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)

  

商务合作,请加微信yunweibang555