目标是引入一种运输和应用层协议,其延迟和网络吞吐量更好。目前,该应用使用REST与HTTP/1.1,我们遇到了高延迟问题。我需要解决这个延迟问题,并且我可以使用gRPC(HTTP/2)或REST/HTTP2其中任何一种。
HTTP/2:
我还知道gRPC使用proto buffer,这是传输结构化数据的最佳二进制序列化技术。 Proto buffer还有助于开发语言不可知的方法。我同意这一点,我可以在REST中使用graphQL实现相同的功能。但是我的关注点在于序列化:问题二:当HTTP/2实现此二进制特性时,使用proto buffer是否在HTTP/2之上提供了额外的优势? 问题三:在流式传输,双向使用情况下,gRPC(HTTP/2)与(REST和HTTP/2)相比如何?
- 多路复用
- 单个TCP连接
- 二进制而非文本
- 头部压缩
- 服务器推送
我还知道gRPC使用proto buffer,这是传输结构化数据的最佳二进制序列化技术。 Proto buffer还有助于开发语言不可知的方法。我同意这一点,我可以在REST中使用graphQL实现相同的功能。但是我的关注点在于序列化:问题二:当HTTP/2实现此二进制特性时,使用proto buffer是否在HTTP/2之上提供了额外的优势? 问题三:在流式传输,双向使用情况下,gRPC(HTTP/2)与(REST和HTTP/2)相比如何?
在互联网上有很多博客/视频将gRPC(HTTP/2)与REST和HTTP/1.1进行比较,像这篇文章。如前所述,我想了解比较GRPC(HTTP/2)和(基于HTTP/2的REST)之间的区别和优势。