2017-07-13 19 views
0

我们使用流式RPC将大型文件发送到GRPC服务器。就像这样:使用GRPC流式传输请求进行代理负载平衡

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

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

回答

1

HTTP负载平衡器通常按照HTTP请求进行平衡。 gRPC流是单个HTTP请求,与流中有多少消息无关。每个客户端都可以定向到不同的后端,因此可以扩展。所以gRPC的行为就像你想要的那样。

流式RPC是有状态的,因此所有消息都必须转到相同的后端。这对结果一致性很重要(与reflection一样),对于某些工作负载(如您的情况)的性能很有帮助。

关于可扩展性的一个注意事项虽然:如果这些流是长期存在的,那么您可以在某些后端拥有高比例流的情况下拥有“热点”。您的服务可以定期(根据您的需要分钟或小时)关闭流并让客户端重新创建流以重新平衡。