HTTP2:内部服务 api 是否应该使用 http2

Mar*_*ler 7 ssl http node.js http2 microservices

我使用的是微服务架构,其中一个服务通过 Nodejs 上的服务器一次调用多个服务

我计划使用 HTTP2 进行从一项服务到另一项服务的 API 调用,因为它仅使用一个带有标头压缩的 TCP 连接。

然而,HTTP2 需要 TLS 支持,这意味着服务向其他人发出的每个 API 调用都要进行 TLS 握手,从而增加了往返开销。

尽管 TLS1.3 仅需要一次往返,但仍然增加了一些额外的开销时间。

我的问题是,首先使用 HTTP2 进行从一个服务到另一个服务的 API 调用是一个好主意,还是继续使用 HTTP1.1 更好

Sta*_*sev 5

HTTP2 的性能很可能不会比普通 HTTP1.1 更高。当您在 HTTPS 和并行请求的上下文中比较它们时,它只会更快。HTTP2 允许重复使用相同的 TLS 握手,以及对多个并行请求(多路复用)使用相同的连接。

这就是您不会在 nginx 和应用程序服务器之间设置 HTTP2 的原因- 因为您通常不需要它们之间的 TLS。因此,除非 a) 您需要在服务之间建立安全连接,b) 您计划发出并行请求 - 使用 HTTP2 进行服务间通信似乎没有意义。

PS:另请阅读 @sbordet 的答案 - 似乎在某些用例中,即使没有 TLS,HTTP2 也能带来好处。