Protocol buffers 涉及固定字段和大重复字段混合的RPC调用的gRPC/protobuf设计模式?

Protocol buffers 涉及固定字段和大重复字段混合的RPC调用的gRPC/protobuf设计模式?,protocol-buffers,grpc,Protocol Buffers,Grpc,使用gRPC和协议缓冲区发送大型数据集是否有一种好的模式,该缓冲区混合了一些头数据和一些大型重复数据 例如,对于接受其他进程生成的矩阵作为输入的服务器,服务和消息可能如下所示: service MatrixService { rpc DoSomething(stream Matrix) returns (stream Matrix) {} } message Matrix { uint32 num_rows = 1; uint32 num_cols = 2; s

使用gRPC和协议缓冲区发送大型数据集是否有一种好的模式,该缓冲区混合了一些头数据和一些大型重复数据

例如,对于接受其他进程生成的矩阵作为输入的服务器,服务和消息可能如下所示:

service MatrixService {
    rpc DoSomething(stream Matrix) returns (stream Matrix) {}
}

message Matrix {
    uint32 num_rows = 1;
    uint32 num_cols = 2;
    string created_by = 3;
    string creation_parameters = 4;
    repeated float data = 5;
}
实际上只有
数据
字段足够大,需要流式传输,其余参数只是服务器只需要接收一次的头

是否有一些常用的模式可以有效地发出包含一些初始头信息和大量重复数据的gRPC请求

在这种情况下(即将
矩阵
消息拆分为{MatrixHeader,MatrixData}中的
一个)是否应使用
oneOf

或者,在第一个请求中只设置头字段,然后按照惯例在后续请求中保留为空,这通常更常见吗


还是有其他的解决方案我没有考虑过?

< P>你可能想考虑数据块。
另外,请注意,接收消息的最大大小为。您可以通过设置频道参数来增加它

谢谢,该答案包含大量信息,将此问题标记为重复问题。您能否至少详细说明您的投票结果,至少听上去很好,我真的认为我必须完全不理解什么是好的(如on-SO)