我目前正在设计一个API,该API应该能够处理相对较小的消息,但有许多数据条目。有添加、删除和列出数据库中存储的所有项目的操作
现在我的问题是:我想在短时间内返回所有条目(最多500万条)。我认为响应流是一种方式
在一条消息中返回多个条目时,使用重复字段对消息进行流式传输有意义吗。到目前为止,我还没有看到任何迹象表明这是否更快
例如:
rpc ListDataSet (ListDataSetRequest) returns (stream ListDataSetResponse);
message ListDataSetResponse {
string transaction_id = 1;
repeated Entries entries = 2;
}
在服务器中,我将为每条消息添加一定数量的条目,并在循环条目列表以使用生成器的同时生成消息
如有任何建议或提示,将不胜感激
是的,流式传输包含重复字段的消息是有意义的
从性能的角度来看,你可能想考虑对你的备选方案进行基准测试,以证明这一点。p>
gRPC缺乏全面的最佳实践,但有人认为消息越小越好,4MiB通常被认为是一个良好的概念上限
另一个要考虑的问题是,您不仅需要考虑服务器的性能,还需要考虑客户机的性能。p>
一种更常见的模式(?)是分页大的结果,并将控制权交给客户机以请求下一个|其他页面。这可能也值得评估
对于异常“巨大”(未指定)的结果,您可能更适合将gRPC消息中的引用返回到带外(例如对象存储)对象
相关问题 更多 >
编程相关推荐