当我浏览gRPC的dial options时,我接触到了window size的概念。因为gRPC使用HTTP/2作为底层协议,所以我找到了这篇文章,其中写道:
我的问题是:窗口是全部还是无?也就是说,如果我的窗口大小为
如果这就是gRPC所说的窗口大小,而且我理解得没错的话,那么这是为了让HTTP/2在同一连接中维护多个并发流。基本上,这是一个数字,告诉发送方接收方希望下一次发送多少数据。出于控制流的原因,连接将不同流的数据放置在不同的窗口中以进行串行处理。流量控制窗口只是一个整数值,表示接收方的缓冲容量。每个发送方为每个流和整个连接都维护一个单独的流量控制窗口。
我的问题是:窗口是全部还是无?也就是说,如果我的窗口大小为
n
字节,则流不会发送任何数据,直到累积至少n
字节?更一般地说,如果我只维护一个流,如何最大化流的性能?我假设更大的窗口大小将有助于避免开销,但会增加数据丢失的风险?