V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
index90
V2EX  ›  程序员

使用 HTTP2 时,还需要连接池吗?

  •  
  •   index90 · 2019-03-14 15:20:52 +08:00 · 2650 次点击
    这是一个创建于 2084 天前的主题,其中的信息可能已经有所发展或是发生改变。

    传统 TCP 连接池的目的是用来解决并发的,而现在 HTTP2 支持多路复用,单个链接就能支持并发了,而且还不会阻塞。

    那么基于 HTTP2 的话,还需要考虑实现连接池吗?

    如果考虑利用 HTTP2 链接发送流式数据,当其中一个请求的数据量较大时,会影响其他请求的延时吧?

    如果要实现连接池,那么连接的负载均衡采用什么策略比较好呢?

    3 条回复    2019-03-14 17:05:10 +08:00
    Infernalzero
        1
    Infernalzero  
       2019-03-14 16:50:03 +08:00
    这得看你怎么用了,用在什么场景下
    官方是推荐用单连接模式,这种情况下有没连接池都一样
    但是单连接有个问题,比如客户端是 netty,单连接的情况下无法最大化利用 CPU,编码解码还是只有一个线程在处理。
    如果追求极端性能,那此时维护 CPU 核数个连接就更高效了
    hilbertz
        2
    hilbertz  
       2019-03-14 16:57:46 +08:00
    http2 只是为了解决外网建立连接慢的问题,特别是 tls 连接,虽然能提高吞吐率,但延迟会增高,对于内网而言,延迟增高会很明显,所以有低延迟需求的内部服务是不会去用 grpc 这种基于 http2 的 rpc 的,所以 http2 一般也只用在边缘服务器
    index90
        3
    index90  
    OP
       2019-03-14 17:05:10 +08:00
    @hilbertz http2 为什么会引致高延时?看了一些 HTTP2 的介绍和原理,理解不了为什么会带来延时增高。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.