Proxy GRPC流式请求的代理负载平衡

Proxy GRPC流式请求的代理负载平衡,proxy,load-balancing,grpc,Proxy,Load Balancing,Grpc,我们使用流式RPC将大文件发送到GRPC服务器。像这样: service FileReceiver { rpc addData(stream DataChunk) returns (Empty) } 在这种情况下,是否可以使用代理负载均衡器,这样负载均衡器就不会在流请求中间切换服务器?随着客户端数量的增加,它能很好地扩展吗?HTTP负载平衡器通常会平衡每个HTTP请求。gRPC流是单个HTTP请求,与流中的消息数量无关。每个客户端都可以定向到不同的后端,因此可以扩展。因此,gRPC的行

我们使用流式RPC将大文件发送到GRPC服务器。像这样:

service FileReceiver
{
    rpc addData(stream DataChunk) returns (Empty)
}

在这种情况下,是否可以使用代理负载均衡器,这样负载均衡器就不会在流请求中间切换服务器?随着客户端数量的增加,它能很好地扩展吗?

HTTP负载平衡器通常会平衡每个HTTP请求。gRPC流是单个HTTP请求,与流中的消息数量无关。每个客户端都可以定向到不同的后端,因此可以扩展。因此,gRPC的行为方式是您想要的开箱即用

流式RPC是有状态的,因此所有消息都必须发送到同一后端。这对于结果一致性(如)非常重要,并且有助于在某些工作负载(如您的案例)中提高性能

关于可伸缩性的一个注意事项是:如果流是长期存在的,那么您可能会有“热点”,其中某些后端的流所占比例很高。您的服务可以定期(根据您的需要,几分钟或几小时)关闭流,并让客户端重新创建流以重新平衡