与 HTTP/2 相比,protobuf 是否提供了大小和速度增益?

Ser*_*rov 3 javascript protocol-buffers http2

HTTP/2 是二进制的,protobuf 也是如此。

如果我在我的服务器上使用 HTTP/2,那么如果我使用 protobuf 来减少消息的大小,或者将 JSON gzipped 并通过 HTTP/2 发送,我是否仍然需要使用 protobuf?

JSON 似乎更易于人类阅读,更易于调试,并且不需要额外的客户端库。

Mat*_*247 5

这些是正交的。HTTP/2 是套接字之上的二进制成帧/多路复用协议。它可以处理单个 TCP 流上的多个并行请求/响应,而 HTTP/1 则不能。然而,从应用程序的角度来看,两者都在请求和响应方向上提供了二进制流,您可以在其中放入文本或 JSON 或 protobuf 编码数据或您想要的任何其他数据。

如果在应用程序级别使用 protobuf 更优化(因为节省空间、更快的编码解码等),那么它在 HTTP/1.1 和 HTTP/2 上都将更优化。如果使用 JSON 对于应用程序来说足够好,那么它是 HTTP/1.1 和 HTTP/2 的正确选择。

与 HTTP/1.1 相比,HTTP/2 作为传输二进制请求和响应数据或发起请求的底层传输可能更快,但这取决于数据和使用场景。

  • 另请注意,http://grpc.io(Google 的 RPC 系统)基于 Protocol Buffers 和 HTTP/2,这表明它们可以很好地结合在一起。 (2认同)