与HTTP / 2上的JSON相比,gRPC在大小上是否有性能优势?

问题描述 投票:0回答:1

我读到gRPC比传统HTTP API更具性能,这是因为它使用协议缓冲区进行了更紧凑的序列化。另一个性能要求是与HTTP / 1.1 JSON API不同,它支持流水线化。

据我目前所知,通过HTTP / 2而不是gRPC来完成单个HTTP连接上多个连接的流水线操作。因此,除了更有效的数据序列化格式之外,与通过HTTP / 2进行的JSON相比,gRPC实际上还具有性能优势吗?]

performance grpc http2
1个回答
0
投票

这里有多个方面。

协议:HTTP / 1.1与HTTP / 2

[HTTP / 2]比[HTTP / 1.1]有许多改进,但是对于某些用例也有缺点。一些改进的例子:

  • HTTP / 2是二进制协议,而HTTP / 1.1是文本协议
  • HTTP / 2可以将TCP连接重新用于发送到不同端点但发送到同一服务器的多个请求。
  • HTTP / 2使用HPACK改进了头压缩功能。如果您例如在连续的API请求中发送相同的Authorization: Bearer <JWT-token>

有效负载格式:JSON与协议缓冲区

这可能会影响有效负载size,但是序列化和反序列化性能可能更重要。另一个重要方面是开发人员的工具和生产力。

gRPC使用的[[Protocol Buffers]是唯一有效的二进制有效载荷格式。有很多选择,例如FlatBuffers,一种零拷贝格式,是根据使用协议缓冲区而设计的。主要用于较小净荷(不是序列化性能)的另一种二进制格式是Avro。 Avro格式在有效载荷格式的可扩展性方面可能会有所帮助(例如,参见Designing Data-Intensive Applications)。

例如JSON vs Protocol Buffers vs FlatBuffers 进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.