我们使用流式 RPC 将大文件发送到 GRPC 服务器。像这样:
service FileReceiver
{
rpc addData(stream DataChunk) returns (Empty)
}
在这种情况下是否可以使用代理负载均衡器,以便负载均衡器不会在流请求中间切换服务器?随着客户数量的增加,它会很好地扩展吗?
HTTP 负载均衡器通常按HTTP请求。 gRPC 流是单个HTTP请求,与流中的消息数量无关。每个客户端都可以定向到不同的后端,因此可以扩展。因此,gRPC 的行为方式是开箱即用的。
流式 RPC 是有状态的,因此所有消息必须发送到同一后端。这对于结果的一致性至关重要(就像反射)并且有助于某些工作负载(例如您的情况)的性能。
不过,关于可扩展性的一个注意事项是:如果流寿命较长,则可能会出现“热点”,其中某些后端拥有较高比例的流。您的服务可以定期(根据您的需要几分钟或几小时)关闭流并让客户端重新创建流以重新平衡。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)