在比较理想的环境下传输大量数据,是否可以用 UDP 完全替代 TCP?

2018-06-23 13:21:26 +08:00
 gaayyy

简单来说,就是内网大约 100 多台机器分布存放了一些较大的数据文件,每台大概有 2T 的样子,现在想把这些分散的文件集中备份到三套专用的存储服务器上。没办法拆硬盘,也没办法改变网络结构,大致计算了一下数据量,理想状态下,等待传输的数据量是:2TB * 1024 * 1024 = 2097152 MB, 而千兆以太网 1Gbps / 8 = 128MBps,存储服务器都是走的硬盘 RAID,硬盘写速率应该能跟上,所以一台机器时间大约是 2097152 MB / 128MBps / 3600 = 4.55 小时。

环境是纯内部网络,没介入互联网,机器都是 DELL 和 hp 的机器,交换机用的是 NetGear 千兆,硬件应该都没问题。但是时间限制只能在周末或者晚上操作。现在主要是考虑到千兆网的 128MBps 是理想状态下的速率,如果自己写一个文件传输的小工具,用 UDP 替代 TCP,这样对数据传输速率是否有改善?想了解一下是否有 v 友处理过类似的案例。

13161 次点击
所在节点    程序员
71 条回复
exkernel
2018-06-23 13:24:34 +08:00
没有改善 udp 也只能 125M/s 最多 而且 udp 还是可能拥堵而丢包
msg7086
2018-06-23 13:26:47 +08:00
代替有什么好处?理想环境下每个包都能完美到达,无需重传,你用 UDP 解决了什么问题呢?
realpg
2018-06-23 13:31:13 +08:00
随便搭个万兆局域网就好了
而且就这网络环境也没啥拥塞的,TCP 轻松跑满
missdeer
2018-06-23 13:32:59 +08:00
用 UDP 组播大概可以只用点对点传输的 1 / 3 的传输时间,但得找个 UDP 可靠传输的协议来做
lihongjie0209
2018-06-23 13:38:15 +08:00
主要瓶颈难道不是在你交换机上吗, 换协议也没用啊
a7a2
2018-06-23 13:53:32 +08:00
我认为是以用 UDP 完全替代 TCP。

应该还有些更尖端的技术可以做到基于数据块的变动而自动同步该块,这样就可以做到无需中断服务

@gaayyy
swulling
2018-06-23 13:55:56 +08:00
理想环境 TCP 很完美,就是世界不理想,所以大家才用 UDP
DevNet
2018-06-23 14:01:59 +08:00
大兄 dei,你这个瓶颈在网卡,跟协议就没关系了。推荐使用网卡绑定,需要在服务器和交换机上分别设置,4 网口绑成负载均衡模式就是 4 千兆的速度了。

另外,一般说的 TCP 慢,是指在数据的刚开始发送的阶段,需要经过 3 个包的握手,之后发包大小根据滑动窗口大小递增 1,2,4,8...这样,直到达到最大带宽,之后速度跟 UDP 就没区别了。UDP 发包不需要经过这个过程,可以直接从最大带宽开始发。

希望我理解的没错。
lslqtz
2018-06-23 14:05:20 +08:00
@msg7086 TCP 要 ACK 吧
nazor
2018-06-23 14:05:40 +08:00
局域网的网络状况很好,换个协议也不会有提升的。
tao1991123
2018-06-23 14:25:24 +08:00
了解一下阿里开源的文件分发系统 Drangonfly 继续 P2P 技术加速分发
hrong
2018-06-23 14:36:14 +08:00
有这时间研究,赶紧跑起来 也就十来个小时吧。。。。
robertgenius
2018-06-23 14:42:17 +08:00
btsync 你值得拥有
likuku
2018-06-23 14:45:18 +08:00
买不起 /不愿投资搞比较高标准的 NAS (冗余度至少达到可承受 2 块硬盘同时坏掉),还得有可靠备份,那么可以:

人力资源丰富,吩咐小弟去找一堆机器组 Hadoop 鸡群吧,设定好冗余策略(随时都可以改)只要不断增添机器,
HDFS 整体容量就能不断扩张,就是用起来比较麻烦,不像共享磁盘,更像个 RSYNC 服务器。
Livid
2018-06-23 14:47:06 +08:00
https://github.com/mholt/caddy/wiki/QUIC

确实有人在做这样的试验。
likuku
2018-06-23 14:49:11 +08:00
多网卡绑定...只给存储器服务器作,也只是提高了服务器的带宽,客户机输出带宽并无改善。

RAID 写入足够?你真的这么看?绑 4 块网卡,至少峰值就是 400Mbytes/sec 了...
MeteorCat
2018-06-23 14:51:52 +08:00
UDP 可有保证传输可靠性的处理方法,但是完全替代也不好说,理论上速度会有所改善,但是丢包风险上面 UDP 也不低
hsuan
2018-06-23 14:55:54 +08:00
局域网应该不会丢包,用 udp 完全可以
ryd994
2018-06-23 15:07:15 +08:00
说 UDP 卖笑低可真未必,TCP 可以用 tso,内存里全是 65k 的大包,让网卡硬件分包,对 CPU 压力反而更小
你这个需求,应该服务器做 bonding 或者直接就多 IP
客户端上传随机挑一个

或者有 USB3 的话,买一堆移动硬盘,直接插上去拷就是了。跑一圈全部插上去开始,再跑一圈收回来就是了。USB3 就是每台 5G,并行肯定比你千兆网快。就算做 bonding,也会遇到交换机背板能力的瓶颈

还可以 rsync,只要每天变动不大的话,慢慢 sync 就是了,管它要几天

@lslqtz delayed ACK,实际 ACK 数量很少

@a7a2 恭喜你重新发明 TCP
ryd994
2018-06-23 15:07:48 +08:00
-卖笑
+开销

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX