使用 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 一起工作?