我正在尝试使用grpc在两个服务之间传输大数据。
数据大小约为23M,由42个大列表组成。
然后,我使用一个一元调用与服务器端流(一次流一个列表)测试性能。
一元电话需要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集群中运行测试。
谢谢。