HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

WDT:多 TCP 链路的数据传输开源库

  • 2015-07-27
  • 本文字数:998 字

    阅读完需:约 3 分钟

作为国际著名的社交网站, Facebook 与开源项目一直关系密切。目前,其设立的开源项目个数已经超过200 个。这些开源项目在为广大开发人员提供便利的同时,也为Facebook 带来了各方面丰厚的回报。近日,Facebook 又公布了一个开源项目——超高速数据传输工具(Warp speed Data Transfer,WDT)。接下来,本文就对WDT 项目进行简要介绍。

从2004 年上线开始,Facebook 迅速发展。时至今日,Facebook 每月的活跃用户量超过20 亿。在西方的万圣节,Facebook 每天所接收到的照片数量更是多达20 几亿张。为了满足用户的巨大需求,该公司先后在美国俄勒冈州和北卡罗来纳州等多个地方建立了数据中心。那么,如何在数据中心内部的主机之间以及数据中心之间进行高效的数据传输就成了迫切需要解决的问题。为此,Facebook 设立了WDT 项目。

WDT 可以被视为一个嵌入式的库或者命令行工具,其目的是在尽量减少资源(CPU/ 内存等)消耗的情况下,利用多个 TCP 路径提高两个系统之间传送文件的效率。为了提高代码的可移植性,Facebook 尽量减少了 WDT 的依赖关系。由此,代码的编译时间也大量减少,并使得项目轻量化。此外,WDT 没有采用异常,以保证传输效率和代码的易于集成。

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

目前,WDT 代码已经托管在 GitHub 中。其代码中包含了一个小的命令行工具 wcp.sh,用来测试传输性能。据透露,在Facebook 内部传输系统之间的RocksDB 快照时,WDT 通过长距离和高延迟的传输链路提供了高达600MB/s 的传输速率。相比于之前高度优化的基于HTTP 的传输方案,WDT 传输速率约是其3 倍左右,且系统资源消耗更少。在没有进行节流控制的情况下,WDT 可以轻易使得40Gb/s 的网卡饱和,并得到近乎理论的链路传输速度(大于4GB/s)。

未来,Facebook 会借助开源社区继续对WDT 项目进行改进。其关注点包括重新构建代码来使用无需复制的流/ 缓存流水线和处理乱序的报文等。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-07-27 08:459861
用户头像

发布了 268 篇内容, 共 122.2 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

元宇宙,以区块链为核心的Web3.0数字生态

CECBC

尚硅谷《MySQL高级特性篇》教程发布

@零度

MySQL

模块六作业

Geek_e6f7f6

架构训练营

“5G+区块链”护航新生儿转诊“生命通道”

CECBC

面试突击15:说一下HashMap底层实现?及元素添加流程?

王磊

Amazon EC2 串行控制台——化繁为简,高效解决网络问题

亚马逊云科技 (Amazon Web Services)

网络

JavaScript 12种设计模式汇总

编程江湖

JavaScript

Java 常用类大讲解!3️⃣(手写 API、源码必备)

XiaoLin_Java

Java 数组 1月月更

Hibernate 如何生成 JPA 的 Metamodel

HoneyMoose

一个基于PoS共识算法的区块链实例解析(升级版)

恒生LIGHT云社区

区块链 共识算法 PoS

如何优雅的遍历Mycat分库表

编程江湖

mycat

读《底层逻辑》

wood

300天创作

sql审核-避免离线sql导致的db集群故障

名白

sql db sql检测 SQL审核 SQL审批

1月月更|推荐学Java——第一个MyBatis程序

逆锋起笔

Java mybatis SSM框架 MyBatis标签 mybatis配置

大咖眼中的AI开源 | 张建:图神经网络和DGL的实际应用

亚马逊云科技 (Amazon Web Services)

网络

react源码解析20.总结&第一章的面试题解答

buchila11

React

开源走向世界(下):从数据库技术演进看开源力量丨BDTC 2021

PingCAP

Avaya大中华区CTO李农:阿里云计算巢加快Avaya应用云部署

阿里云弹性计算

弹性计算 年度峰会 计算巢

IntelliJ IDEA 的 Metamodel 配置

HoneyMoose

react源码解析19.手写迷你版react

buchila11

React

架构师实战营3期毕业设计

小饭🍎

站在面试官角度,看求职与内卷

程序人生

政法委社会治安防控平台建设,重点人员联防联控系统开发

a13823115807

设计电商秒杀系统

奔奔

Web3:创作者经济的黄金时代

CECBC

城墙上的“云镜派”,如何守护云上资产安全?

脑极体

为什么要把系统拆分成分布式的?为啥要用dubbo?

JavaEdge

1月月更

Kafka的生产集群部署

编程江湖

kafka

Magic UI四子围城,2022折叠屏灵魂觉醒

脑极体

用复杂的方式学会数组(Python实现动态数组)

宇宙之一粟

Python 数据结构 数组 1月月更

ReactNative进阶(十四):初探 Gradle

No Silver Bullet

Gradle React Native 1月月更

WDT:多TCP链路的数据传输开源库_Meta_张天雷_InfoQ精选文章