流量控制(Flow Control)

解释了什么是流量控制以及如何手动控制它。

概述

流量控制是一种机制,用于确保消息的接收者不会被快速发送者压垮。流量控制防止数据丢失,提升性能,并增加系统的可靠性。它适用于流式 RPC,但与单次 RPC 无关。默认情况下,gRPC 会为您处理流量控制的交互,尽管某些语言允许您覆盖默认行为并显式控制流量控制。

gRPC 利用底层传输层来检测何时可以发送更多数据。当接收方读取数据时,会向发送方返回确认,告知接收方有更多的容量。

根据需要,gRPC 框架将在写入调用返回之前等待。在 gRPC 中,当一个值写入流时,并不意味着它已经通过网络发送。相反,它已经被传递给框架,框架将处理缓冲并将其发送到操作系统,接着通过网络发送。

服务器写入客户端的流量控制与客户端写入服务器的流量控制是相同的。

image 2024 12 24 10 17 42 779

如果客户端和服务器都在进行同步读取或使用手动流量控制,并且两者都尝试进行大量写入而没有进行任何读取,可能会导致死锁。

语言支持

语言 示例

Java

Java 示例