protocol-buffers - go-micro 和 go-grpc 的区别

标签 protocol-buffers grpc go-micro

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

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

谢谢!

最佳答案

让我试一试。

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

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

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

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

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

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

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

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

关于protocol-buffers - go-micro 和 go-grpc 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728398/

相关文章:

go - 如何在我的 main.go 中导入 go 接口(interface)包?

c++ - Simple Protocol Buffers 程序在使用 g++ 而不是 clang++ 编译时工作

java - 如何使用 Proto 定义表示 JSON 对象变量

docker-compose - 在 docker-compose 中运行时,Go micro dashboard 不注册我的服务

tensorflow - Distributed TensorFlow是否支持InfiniBand互联 "out of the box"

go - 在 golang 中将元数据传递到上下文时出错

go - proto.Unmarshal 测试不一致地失败

python - 有没有办法在 pypy 上使用 Google Protobuf?

java - 动态注册的第三方 Bean 上的类似 Spring 的后处理器 Hook