我想知道,流控制在 Go 中的客户端流式 gRPC 服务中是如何工作的。
具体来说,我有兴趣知道何时调用stream.SendMsg()
客户端块中的函数?根据文档:
SendMsg() 阻塞直到:
- 有足够的流量控制来调度 m 与传输,或者......
那么流的流控机制的规范是什么?例如,如果负责从流中读取消息的服务器端代码读取消息的速度不够快,那么在什么时候调用 SendMsg() 会阻塞?
服务器是否实现了某种背压机制来告诉客户端它还没有准备好接收更多数据?同时,所有在背压信号之前成功发送的消息,在哪里排队?