当前位置: 首页 > 网络应用技术

GRPC源代码分析(5):GRPC服务器的流控制 - 采样流控制

时间:2023-03-05 18:19:34 网络应用技术

  我们都知道TCP是交通控制机制。GRPC服务器在应用程序层上实现自己的流量控制,并将流量控制分为三个级别:

  可以说流量控制是GRPC高性能的关键。通过动态控制数据发送和接收数据的速率,GRPC保证在任何网络下的最大性能,尝试改善传输带宽并减少传输延迟。我们首先出现。看看GRPC服务器如何实现样本级别的流量控制。

  以下内容从GRPC的官方博客中转换,该博客介绍了样本级别流量控制的重要性和原则。

  BDP估计和动态流量控制此功能在高延迟网络环境中减少了GRPC和HTTP/1.1之间的性能差距。

  带宽延迟产品(BDP),即带宽延迟体积,是带宽和网络连接的数据往返延迟的乘法。BDP可以有效地告诉我们,如果完全使用了网络连接,则在网络连接的某个时刻,网络连接上可以有多少个单词。节日的数据。

  @ejona最初提出了计算BDP和相应调整的算法。后来,GRPC-C Core和Grpc-Java的想法。有效BDP1.5的近似值的BDPBDP ping的想法。如果该值接近当前流窗口的大小(例如,超过2/3),则接收器需要增加窗口的大小。三)字节)。

  BDP采样当前在GRPC-GO服务器端的默认情况下。

  接下来,让我们看一下GRPC服务器如何根据估计的BDP实现流量控制。

  一个在GRPC服务器端定义,这是用于计算BDP的核心:

  有两种主要方法,:

  大约有两个功能:

  该函数是从客户端接收HTTP/2数据框后由GRPC服务器执行的功能。从中我们可以看到:

  收到BDPPPING框架后,客户将立即返回ACT。服务器将捕获此ACK:

  它是接收HTTP/2 ping框架后调用的功能。您可以看到,当ping框架是ACK时,将调用此功能。

  在中间,当前的BDP值是通过一系列计算获得的。如果需要流量控制,则将调用中间注册的功能,并将新窗口大小传递到中。

  那么如何处理新窗口的大小?

  值得注意的是:

  在本文中,我们了解了GRPC服务器的BDP采样流量控制。接下来,让我们看一下如何在连接级别实现GRPC服务器的流量控制。