【问题标题】:Does protobuf give size and speed gain in comparison to HTTP/2?与 HTTP/2 相比,protobuf 是否提供大小和速度增益?
【发布时间】:2017-06-11 18:20:43
【问题描述】:

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

如果我在我的服务器上使用 HTTP/2,那么如果我使用 protobuf 来减少消息的大小,或者将 JSON gzip 压缩并通过 HTTP/2 发送比较相同,我是否还需要使用 protobuf?

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

【问题讨论】:

    标签: javascript protocol-buffers http2


    【解决方案1】:

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

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

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

    【讨论】:

    • 另请注意,grpc.io -- Google 的 RPC 系统 -- 基于 Protocol Buffers 和 HTTP/2,表明它们可以很好地结合在一起。
    • 确实如此。然而 gRPC 甚至有点特殊,因为它使用了许多 HTTP/1.1 库甚至没有公开的一些特性,例如。发送和接收尾随标头。因此,与大多数其他基于 HTTP 的系统相比,它对底层 HTTP 实现的要求更严格。
    猜你喜欢
    • 2015-04-27
    • 2012-01-06
    • 2021-06-22
    • 2020-06-07
    • 2010-11-30
    • 2012-10-24
    • 2017-01-08
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多