我构建了一个“go-micro”服务。根据我的理解,go-micro使用protobuf来创建定义并创建消息结构gRPC作为网络协议(我当然可能在这里错了)。
如果上面的说法正确,那插件“go-grpc”的用途是什么?
谢谢!
答案 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插件的简单包装。