kfe*_*kis 5 go grpc grpc-go
我想知道,流控制在Go中的客户端流gRPC服务中如何工作。
具体来说,我想知道何时stream.SendMsg()在客户端块中调用函数?根据文档:
stream.SendMsg()
SendMsg()阻止直到: 有足够的流量控制来安排与运输有关的m,或...
SendMsg()阻止直到:
那么流的流控制机制的规范是什么?例如,如果负责从流中读取消息的服务器端代码读取消息的速度不够快,那么在什么时候调用SendMsg()会阻塞?
服务器是否实现了某种背压机制,以告知客户端它尚未准备好接收更多数据?同时,在反压信号之前已成功发送的所有消息都在哪里排队?
men*_*anl 5
gRPC 流量控制基于 http2 流量控制: https://httpwg.org/specs/rfc7540.html#FlowControl
会有背压。仅当有足够的流控制窗口时消息才会成功发送,否则 SendMsg() 将阻塞。
接收端发出的信号不是增加反压,而是释放反压。这就像说“现在我准备好接收另外 1MB 的消息,发送它们”。
归档时间:
6 年,7 月 前
查看次数:
419 次
最近记录: