MessagePack / Protocol Buffers 的传输协议是什么?

What's the Transport Protocol for MessagePack / Protocol Buffers?

有几个用于数据序列化的库,如 MessagePack、Protocol Buffers 等。

但是传输协议应该是什么?应该是 HTTP REST 还是其他?

对我来说,使用 REST 没有多大意义,因为 HTTP 有开销。因此,如果我们决定优化速度并使用 ProtoBuff,那么半途而废并仅优化序列化而不优化传输似乎是不合逻辑的。

协议缓冲区只是常见的序列化格式。您可以随心所欲地运输它们。

您可以通过 tcp 甚至 udp 套接字发送原始字节。但是您的应用程序使用 http 也可能是合理的。如果有意义,您甚至可以将它们封装在 html/xml 中。

对于 Protobuf,您应该使用 gRPC,这是 Google 的官方 RPC 实现。它很高效,但更重要的是,它旨在与 Protobuf 很好地集成——例如您可以将服务定义与消息类型一起写入 .proto 文件。

另一种与许多序列化格式配对良好的常用传输是 ZeroMQ