JSON RPC 与 HTTP2 与 grpc 有啥区别?

Posted

技术标签:

【中文标题】JSON RPC 与 HTTP2 与 grpc 有啥区别?【英文标题】:What the difference between JSON RPC with HTTP2 vs grpc?JSON RPC 与 HTTP2 与 grpc 有什么区别? 【发布时间】:2020-03-05 03:21:30 【问题描述】:

我不喜欢同时做很多事情的工具。所以 GRPC 在我看来是开销,它就像 kubernetes。 GRPC 是实际上结合了两件事的工具:扩展的 Protobuf(服务支持)和 HTTP2。

我读过很多文章说使用 GRPC 的性能非常好。有两个原因

使用protobuf,比json或xml小。 GRPC 使用 HTTP2 作为传输协议

这里是主要部分:protobuf 和 HTTP2 是独立的项目、工具等等。有了这个理解,我可以说 GRPC 只不过是结合了几个不同的工具,比如 kubernetes 结合了 docker 和编排工具。

所以我的问题是:W使用带有任何有效负载(CSV、XML、JSON 等)的 GRPC 与 HTTP2 的实际优势是什么。

让我们跳过关于序列化的部分,因为正如我提到的,protobuf 是独立于 grpc 的库

【问题讨论】:

【参考方案1】:

正如您所指出的,gRPC 和 Protobuf 经常混为一谈。而在绝大多数情况下,gRPC 使用 protobuf 作为 IDL,使用 HTTP/2 作为传输,this is not always the case。

那么,gRPC 自身提供什么价值呢?对于初学者,它为每个传输提供经过实战考验的实现,以及对 protobuf IDL 的一流支持。整合这些东西并非易事。 gRPC 将它们全部打包到一个漂亮的可插拔盒子中,这样您就不必做繁琐的工作了。

它还为您提供了 HTTP/2 本身不具备的功能。提供Pluggable authorization/authentication、distributed tracing instrumentation、debugging utilities、look-aside load balancing(包括upcoming support for the xDS protocol)、and more。

【讨论】:

非常好的答案。您似乎对 gRPC 了解很多。很想听听一些关于 JSON-RPC 的用例和优点的好消息。

以上是关于JSON RPC 与 HTTP2 与 grpc 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

基于 gRPC 的服务注册与发现和负载均衡的原理与实战

基于gRPC的注册发现与负载均衡的原理和实战

《RPC 应用与原理概述》之入门介绍

用于双向 RPC 的 grpc-js 中未解决的 HTTP2 依赖关系

grpc-源码-网络模型

gRPC-go源码剖析与实战专栏介绍