一个面试题:微服务 RPC 下,发现使用 TCP 的效率比 UDP 高,可能是什么原因

2021-03-30 16:39:14 +08:00
 jizhihaoSAMA

今天翻面经翻到了一个这个题,我想了一下,好像还是没啥头绪,百度一下也没一个答案,有大佬帮忙解答下吗,谢谢了。

3206 次点击
所在节点    问与答
16 条回复
xupefei
2021-03-30 16:45:55 +08:00
这题也太模糊了。一种可能性是 udp 被运营商 qos 了。
sagaxu
2021-03-30 16:55:38 +08:00
自己实现的 udp 可靠性不如内核性能高
Ariver
2021-03-30 17:07:35 +08:00
tcp 连接被复用了。
并不是每次连接都三次握手?
Jooooooooo
2021-03-30 17:37:16 +08:00
效率指的是什么?
akira
2021-03-30 17:46:16 +08:00
即使 tcp 连接复用,也应该是 tcp 的性能更好的。

猜测可能是海量的数据碎片的情况下,这种情况下 udp 表现可能会没有 tcp 的好
mhycy
2021-03-30 18:21:48 +08:00
需要看 UDP 如何实现拥塞控制与丢包重传,这是和底层实现相关的问题
如果 UDP 没有实现拥塞控制只实现丢包重传的话
那么在大数据量的情况下,数据会因为溢出缓冲区或者拥堵丢包而等待重传,此过程会引入延迟

具体情况具体分析,没有细节只能泛泛而谈的题目
跟连接复用关系不大,因为 UDP 也能实现复用(自己实现上层的拥塞控制逻辑基础上再实现复用逻辑)
killergun
2021-03-30 18:37:38 +08:00
TCP 包合并发送? UDP 没有这个
drackzy
2021-03-30 18:41:52 +08:00
tcp 可以 bbr
watzds
2021-03-30 18:55:30 +08:00
Rpc 还有用 udp 实现的吗,孤陋寡闻了
shyrock
2021-03-30 19:16:58 +08:00
可能的原因就是这人不会用 udp,否则你 tcp 的任何优化机制我 udp 都可以纳为己用,没道理比不过。
GGGG430
2021-03-30 19:21:11 +08:00
效率高是指? 如果这公司真在线上 rpc 用 udp, 我劝你别去这家公司
p2pCoder
2021-03-30 19:24:07 +08:00
@watzds quic/http3 算吗
zls3201
2021-03-30 21:44:06 +08:00
完全是内网? 还是在公网? tcp 是稳定连接 建立后 通讯数据包更小 快一些没问题 长连接比 udp 通讯效率高 不是很正常吗 都不知道 你们在争啥
GGGG430
2021-03-30 23:15:30 +08:00
@zls3201 都不知道你在说啥, tcp 稳定后比 udp 快一些? 知道拥塞控制吗? 网络风暴呢?
angryfish
2021-03-31 07:34:50 +08:00
微服务,我们说 tcp 比 udp 效率应该是服务器之间建立长链接了
@Ariver 虽然不用每次建立长链接。但 tcp 每次传输数据,都要返回确认,而 udp 不需要。理论上,tcp 是不可能比 udp 效率高的
zqx
2021-03-31 11:39:09 +08:00
tcp 需要根据滑动窗口大小来控制流量,还要重传,怎么可能比 udp 快?

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

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

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

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

© 2021 V2EX