【问题标题】:What is the difference between net/rpc package of Golang and gRPC framework?Golang 的 net/rpc 包和 gRPC 框架有什么区别?
【发布时间】:2016-12-26 07:46:29
【问题描述】:

gRPC 是一个“通用 RPC 框架”,它使用 ProtoBuffer 进行序列化和反序列化,而 net/rpc 包似乎可以用 encoding/gob 做“几乎”相同的事情,并且两者都在 Google 的保护下。
那么它们之间有什么区别呢?选择其中之一有什么优缺点?

【问题讨论】:

    标签: go rpc grpc


    【解决方案1】:

    嗯,你自己说的。 gRPC 是一个使用 RPC 进行通信的框架。 RPC 不是 Protobuf,而是 Protobuf 可以使用 RPC,而 gRPC 实际上是 Protobuf over RPC。

    您无需使用 Protobuf 在您的应用程序中创建 RPC 服务。如果您正在做中小型库/应用程序,这是一个好主意。此外,您无需学习 Protobuf 的语法即可创建自己的服务。

    但是,Protobuf 比 REST 快得多。这是与 Protobuf 语法学习曲线的缺点进行交流的一种更方便的方式。此外,您可以使用 Protobuf 生成更多语言的代码库,而不仅仅是 Go。因此,如果您在 Java 中有某种服务,则可以使用 Protobuf 在它们之间轻松生成 RPC 调用,而如果您使用 net/rpc 包,则必须实现它们两次(一次在 Go 中,一次在 Java 中)

    一般来说,我几乎都会使用 Protobuf。这让您有信心在更大规模或更复杂的项目中使用它。

    【讨论】:

    • 我不认为“Protobuf 使用 RPC”。 Protobuf 可用于实现 RPC。它也可以用于其他消息传递或序列化目的。
    • 你说得对,我的意思是在这个特定的上下文中“Protobuf 在 gRPC 的上下文中使用 RPC”。为了以防万一,我已经对其进行了编辑以使其更加清晰
    • 当你想说“一系列 HTTP 请求”时,请不要说“REST”。 ReST 是一种本身与 HTTP 无关的方法。
    • @MaC 那么gRPC和net/rpc实现一个RPC组件的主要区别是gRPC可以支持多种语言?
    • 主要是的。据我所知,gRPC 未来希望支持 JSON、XML 等,并且有一些功能,比如平衡器,目前仍处于试验阶段。将其视为 net/rpc 之上的高级层,可以简化您的一些任务。
    猜你喜欢
    • 2020-10-11
    • 2020-03-05
    • 2023-02-03
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2016-06-12
    相关资源
    最近更新 更多