[英]Grpc transfer big data, one unary call is slower than streaming,
我正在尝试使用 grpc 在两个服务之间传输大数据。
数据大小约23M,由42个大List组成。
然后我使用一个一元调用与服务器端流(一次流一个列表)来测试性能。
一元调用需要 276.59 毫秒。
流式调用需要 126.64 毫秒。
但是如果我将数据更改为包含 1000 个小列表,每个列表只有一个数字,流式调用比一元调用慢得多。
结果正常吗? 为什么?
这是服务器端代码:
public override Task<MemDtoToWbs> GetLargeMEM(Empty request, ServerCallContext context)
{
return Task.FromResult(MemData.GrpcLargeMem);
}
public override async Task StreamLargeMem(Empty request, IServerStreamWriter<LogDtoToWbs> responseStream, ServerCallContext context)
{
foreach (var log in MemData.GrpcLargeMem.Logs)
{
await responseStream.WriteAsync(log);
}
}
我使用 .net core 3.1 和 grpc nuget 包 2.32.0。 在 aks 集群中运行测试。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.