go-micro和go-grpc之间的区别

时间:2018-04-09 08:19:28

标签: protocol-buffers grpc go-micro

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

让我尝试一下。

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

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

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

因此,综上所述,我们可以将两者结合起来以形成各种RPC。例如,通过UTP发送JSON数据是RPC的一种形式,通过TCP发送XML数据是另一种形式,通过UTP发送Protobuf数据又是另一种形式。

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

go-mico是一个微服务框架,服务通过RPC进行通信,因此go-micro为开发人员提供了各种RPC可供选择,它们以插件的形式出现,例如UTP,HTTP,GRPC等。< / p>

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

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

答案 1 :(得分:1)

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

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