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

2019-03-14 15:20:52 +08:00
 index90

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

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

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

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

2650 次点击
所在节点    程序员
3 条回复
Infernalzero
2019-03-14 16:50:03 +08:00
这得看你怎么用了,用在什么场景下
官方是推荐用单连接模式,这种情况下有没连接池都一样
但是单连接有个问题,比如客户端是 netty,单连接的情况下无法最大化利用 CPU,编码解码还是只有一个线程在处理。
如果追求极端性能,那此时维护 CPU 核数个连接就更高效了
hilbertz
2019-03-14 16:57:46 +08:00
http2 只是为了解决外网建立连接慢的问题,特别是 tls 连接,虽然能提高吞吐率,但延迟会增高,对于内网而言,延迟增高会很明显,所以有低延迟需求的内部服务是不会去用 grpc 这种基于 http2 的 rpc 的,所以 http2 一般也只用在边缘服务器
index90
2019-03-14 17:05:10 +08:00
@hilbertz http2 为什么会引致高延时?看了一些 HTTP2 的介绍和原理,理解不了为什么会带来延时增高。

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

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

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

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

© 2021 V2EX