即时更改序列化的 protobuf 消息?

是否可以更改(追加、合并等)序列化protobuf消息而不必先对其进行解组?我正在使用golang/protobuf 包

理想情况下,我希望有一个服务可以接收传入的序列化消息,即时附加一些字段,然后将消息传递给下一个服务 - 有点像中间件,可以将附加信息添加到有效负载中,而无需必须不断地解组和编组。

一些上下文:系统是实时的,所以我想尽可能减少开销。


qq_笑_17
浏览 191回答 1
1回答

杨__羊羊

从协议缓冲区的文档:如您所知,协议缓冲区消息是一系列键值对。消息的二进制版本仅使用字段的编号作为键——每个字段的名称和声明的类型只能在解码端通过引用消息类型的定义(即 .proto 文件)来确定。对消息进行编码时,键和值将连接成一个字节流。当消息被解码时,解析器需要能够跳过它不识别的字段。这样,可以将新字段添加到消息中,而不会破坏不知道它们的旧程序。为此,有线格式消息中每一对的“密钥”实际上是两个值——您的 .proto 文件中的字段编号,加上一个提供足够信息来查找以下值长度的连线类型。因此,要将字段附加到编码的协议缓冲区消息,您可以简单地将编码字段附加到字节流/切片的末尾。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python