首页 > 解决方案 > RESTful 端点返回 Protobuf 字符串是否常见?

问题描述

您没有 gRPC 服务器(例如,由于平台限制),而是有一个data.SerializeToString()作为有效负载返回的 REST 端点。当然,该端点的任何客户端都会为每个响应提供适当的 proto 文件,因此他们可以ParseFromString(data)并且正在路上。这样做的原因包括 Protobufs 的好处。

标签: apirestprotocol-buffersgrpc

解决方案


提高对问题的理解:将 PB 用于 gRPC 传输以外的其他目的是否很常见?

是的,这是完全常见和合理的。PBs 实际上只不过是一种数据序列化格式。gRPC 只是将其用作消息交换格式(自然选择,因为两者都是 Google 创作的)。让答案是谷歌本身的描述:

协议缓冲区是 Google 用于序列化结构化数据的语言中立、平台中立、可扩展机制。

Google 的基本教程是将其保存到磁盘。对任何其他二进制 blob(jpeg、mp3、...)执行任何操作

但!如果序列化速度对你来说真的很重要,不要假设任何事情。今天的 JSON 库可能会出人意料地表现出色 - 取决于您的特定平台和主要消息特征。进行自己的性能测试。如果确认 JSON 的劣势,那么还有比 PB 序列化速度更快的库。举几个例子:谷歌不太流行的 PB 兄弟FlatBuffers和一种叫做Simple Binary Encoding的东西,它是为高频交易开发的……不言自明。


推荐阅读