3

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

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

谢谢!

4

2 回答 2

10

让我试一试。

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 插件。

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

于 2018-08-11T03:47:33.187 回答
2

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

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

于 2018-04-10T13:27:47.937 回答