【问题标题】:Difference between go-micro and go-grpcgo-micro 和 go-grpc 的区别
【发布时间】:2018-09-18 14:00:38
【问题描述】:

我已经构建了一个“go-micro”服务。据我了解,go-micro 使用 protobuf 来定义和创建消息结构并使用 gRPC 作为网络协议(我当然可能在这里错了)。

如果以上正确,那么插件“go-grpc”的用途是什么?

谢谢!

【问题讨论】:

    标签: protocol-buffers grpc go-micro


    【解决方案1】:

    让我试一试。

    RPC只是一种方法调用模型,只要我们能从本地调用远程服务,就可以说是某种RPC。

    RPC 有不同的风格,因为客户端和服务可以使用不同的协议进行通信,例如 UDP、TCP、HTTP、HTTP/2。

    Protobuf 和 JSON、XML 一样,只是数据交换格式,除了 json 和 xml 是基于文本的,而 protobuf 是基于字节的,节省了大量的带宽和序列化时间。

    所以放在一起,我们可以将这两者结合起来形成各种 RPC。例如,通过 UDP 发送 JSON 数据是 RPC 的一种形式,通过 TCP 发送 XML 数据是另一种形式,通过 UDP 发送 Protobuf 数据又是另一种形式。

    GRPC 是一种通过 HTTP/2 协议发送 Protobuf 数据的 RPC。

    go-micro 是一个微服务框架,服务通过 RPC 进行通信,因此 go-micro 为开发者提供了各种 RPC 可供选择,它们以 Plugins 的形式出现,如 UDP、HTTP、GRPC 等。

    GRPC 是一种通信模型,可以用 C++、JAVA、Go 等大多数语言实现。因此 Go-GRPC 是一个用 Go 语言编写的 GRPC 插件。

    希望我解释清楚,如果我错了,请纠正我,

    【讨论】:

      【解决方案2】:

      Go-micro 使用 Go 接口进行抽象。因此,可以换出底层实现。默认 go-micro 使用 HTTP 进行通信

      Go-GRPC 是对 go-micro 和客户端和服务器的 grpc 插件的简单封装。

      【讨论】:

      • 只是看我做对了,所以默认 go-micro 使用带有 protobuf 的 HTTP,而 go-grpc 使用 gRPC 而不是 HTTP?
      • 没错,你会在go-micro github上找到例子
      猜你喜欢
      • 2021-02-25
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      相关资源
      最近更新 更多