使用 Protobufs 的批处理技术

Posted

技术标签:

【中文标题】使用 Protobufs 的批处理技术【英文标题】:Batching technique using Protobufs 【发布时间】:2019-10-04 11:56:07 【问题描述】:

在通过 HTTP 发送时,是否有一种有效的技术来批处理不同的 Protobuf 事件?

目标是在一个请求中包含多类型 Protobuf 消息的列表。我的一个想法是将消息分隔成小数组并指定它们的类型以便能够在服务器上反序列化它们。

【问题讨论】:

【参考方案1】:

你可以使用一些Any消息类型结合repeated,如下:

message Any 
    string type_url = 1;
    bytes value = 2;


message Envelope 
    repeated Any events = 1;

然后,在您的代码中:

序列化时,必须根据value中序列化的消息类型设置type_url 反序列化时,必须阅读type_url才能知道value中包含的类型,并进行相应的反序列化

上面的例子复制了google/protobuf/any,记录在这里: https://developers.google.com/protocol-buffers/docs/proto3#any

【讨论】:

以上是关于使用 Protobufs 的批处理技术的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Go 的类型别名让自己的模型与 protobufs 一起工作?

反编译protobufs-net的bin文件

protobufs 格式的原始解码器

raspberry pi install protobufs

Dart Websocket 内存泄漏

仅在开发模式下播放框架 java.lang.NoClassDefFoundError