写点什么

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:4510349
用户头像

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

关注

评论

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

哪些技术有可能坐上智慧城市发展的快车

Onegun

智慧城市 小程序容器 数字城市

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

Spring Boot如何优雅提高接口数据安全性

Java spring Spring Boot

如何在 Mac 上查看显示刷新率

互联网搬砖工作者

NFTScan 开发者平台发布 CU 付费方案,为 Web3 初创团队提供多链 NFT API 服务

NFT Research

NFT #Web3

【活动报名】PolarDB开源数据库&PG中文社区技术沙龙温州站

阿里云数据库开源

数据库 postgresql 阿里云 开源 polarDB

兼顾可扩展、高并发与数据一致性:咸鱼优惠系统设计实践

Java你猿哥

Java 架构 ssm 架构设计 并发

全新问世!阿里内藏版的SpringBoot 2.5实战笔记,全面覆盖新特性

Java spring 微服务 Spring Boot 框架

大开眼界!Jenkins结合SpringCloud+K8S,打通微服一条龙技术讲解

Java Kubernetes k8s Spring Cloud jenkins

做客《创新之路》,Tapdata 创始人唐建法对话央视著名主持人李雨霏,畅聊创业故事

tapdata

大模型竞争白热化 这家广州的科技公司却开辟了新战场

科技热闻

WebSocket与Socket、TCP、HTTP的区别

Apifox

程序员 TCP socket HTTP websocket

跨平台的Markdown编辑器:Typora for Mac中文版

真大的脸盆

intellij idea 粘贴字符串如何不带换行符?

源字节1号

微信小程序 开源 软件开发 前端开发 后端开发

小程序的安全架构解析

Onegun

小程序 安全 小程序容器 小程序架构

阿里内部教材:15W字的SpringCloud微服务实战,我一口气给你打包

Java 架构 微服务 Spring Cloud

GitHub发布即百万!字节内网超实用 java性能优化手册,star超十万

Java你猿哥

Java JVM ssm Java性能调优 java程序优化

头部企业走入无人区,国产数智化厂商挑大梁

用友BIP

【网易云信】网易云信 RTC 音频问题排查的挑战与实践

网易智企

RTC 实时音视频 AIGC

MLCC龙头涨价;车厂砍单芯片;台积电28nm设备订单全部取消!

元器件秋姐

芯片 汽车 资讯 新能源 MLCC

软件测试丨Pytest学习笔记-Mark标记、Skip跳过、xFail预期失败

测试人

软件测试 自动化测试 测试开发 pytest

网易云信 RTC 音频问题排查的挑战与实践

网易云信

RTC 实时音视频 AIGC

今年互联网是“银二铜三铁四丐五”?程序员面试如何破局?

Java你猿哥

Java 架构 算法 多线程 java面试

还在分不清各种IO模型?

Java你猿哥

Java Linux io I/O模型 Java IO

用户费力度建设初探

Qunar技术沙龙

去哪儿网 用户费力度

翻遍GitHub帮你总结了一份并发图册+高并发笔记,一次性搞懂并发编程

小小怪下士

Java 程序员 后端 高并发 并发

德邦快递:逆境之下,让数字化辅助业务的利润增长

Kyligence

数据分析 数字化管理 指标中台

从GitHub火到头条!共计1658页的Java岗面试核心MCA版,拿走不谢

Java java面试 Java八股文 Java面试题 Java面试八股文

Go_Gin之初体验

神木鼎

golang 日更 gin框架

如何利用java实现一个布隆过滤器?

Java 布隆过滤器

用scrum敏捷工具做敏捷需求管理

顿顿顿

Scrum 敏捷开发 敏捷项目管理 看板工具

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