V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jizhihaoSAMA
V2EX  ›  问与答

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

  •  
  •   jizhihaoSAMA · 2021-03-30 16:39:14 +08:00 · 3176 次点击
    这是一个创建于 1128 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2021-03-31 11:39:09 +08:00
    xupefei
        1
    xupefei  
       2021-03-30 16:45:55 +08:00 via iPhone   ❤️ 1
    这题也太模糊了。一种可能性是 udp 被运营商 qos 了。
    sagaxu
        2
    sagaxu  
       2021-03-30 16:55:38 +08:00 via Android   ❤️ 1
    自己实现的 udp 可靠性不如内核性能高
    Ariver
        3
    Ariver  
       2021-03-30 17:07:35 +08:00
    tcp 连接被复用了。
    并不是每次连接都三次握手?
    Jooooooooo
        4
    Jooooooooo  
       2021-03-30 17:37:16 +08:00
    效率指的是什么?
    akira
        5
    akira  
       2021-03-30 17:46:16 +08:00
    即使 tcp 连接复用,也应该是 tcp 的性能更好的。

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

    具体情况具体分析,没有细节只能泛泛而谈的题目
    跟连接复用关系不大,因为 UDP 也能实现复用(自己实现上层的拥塞控制逻辑基础上再实现复用逻辑)
    killergun
        7
    killergun  
       2021-03-30 18:37:38 +08:00
    TCP 包合并发送? UDP 没有这个
    drackzy
        8
    drackzy  
       2021-03-30 18:41:52 +08:00
    tcp 可以 bbr
    watzds
        9
    watzds  
       2021-03-30 18:55:30 +08:00 via Android
    Rpc 还有用 udp 实现的吗,孤陋寡闻了
    shyrock
        10
    shyrock  
       2021-03-30 19:16:58 +08:00
    可能的原因就是这人不会用 udp,否则你 tcp 的任何优化机制我 udp 都可以纳为己用,没道理比不过。
    GGGG430
        11
    GGGG430  
       2021-03-30 19:21:11 +08:00
    效率高是指? 如果这公司真在线上 rpc 用 udp, 我劝你别去这家公司
    p2pCoder
        12
    p2pCoder  
       2021-03-30 19:24:07 +08:00
    @watzds quic/http3 算吗
    zls3201
        13
    zls3201  
       2021-03-30 21:44:06 +08:00
    完全是内网? 还是在公网? tcp 是稳定连接 建立后 通讯数据包更小 快一些没问题 长连接比 udp 通讯效率高 不是很正常吗 都不知道 你们在争啥
    GGGG430
        14
    GGGG430  
       2021-03-30 23:15:30 +08:00
    @zls3201 都不知道你在说啥, tcp 稳定后比 udp 快一些? 知道拥塞控制吗? 网络风暴呢?
    angryfish
        15
    angryfish  
       2021-03-31 07:34:50 +08:00 via iPhone
    微服务,我们说 tcp 比 udp 效率应该是服务器之间建立长链接了
    @Ariver 虽然不用每次建立长链接。但 tcp 每次传输数据,都要返回确认,而 udp 不需要。理论上,tcp 是不可能比 udp 效率高的
    zqx
        16
    zqx  
       2021-03-31 11:39:09 +08:00 via Android
    tcp 需要根据滑动窗口大小来控制流量,还要重传,怎么可能比 udp 快?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1044 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:45 · PVG 07:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.