json - JSON RPC 与 HTTP2 与 grpc 有什么区别?

标签 json protocol-buffers grpc http2 json-rpc

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

我读了很多文章说使用 GRPC 的性能很棒。而且有两个原因

  • 使用protobuf,它比json或xml小。
  • GRPC 使用 HTTP2 传输协议(protocol)

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

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

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

    最佳答案

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

    那么,gRPC 本身提供了什么值(value)呢?对于初学者,它为每个传输提供经过实战考验的实现,以及对 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提供。

    关于json - JSON RPC 与 HTTP2 与 grpc 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767467/

    相关文章:

    java - 使用 spring 中的 Rest 模板通过 post 调用发送 json 数据

    java - 在新的 .proto 文件中使用已编译的 Protobuf 类

    go - Golang 中的 GRPC 连接管理

    c++ - 后台线程中的grpc服务器c++

    c++ - Protobuf 版本冲突

    grpc - grpc 中的 _MultiThreadedRendezvous 是什么以及如何解析它

    javascript - 如何将变量保存到 JSON 文件?

    arrays - json_agg Postgres 中的两列

    java - jackson ,如何使用自定义名称反序列化字段?

    c++ - Google Protocol Buffers - 缺少必填字段,即使所有字段显然都存在