本篇文章要介绍的场景是,服务器端接收到客户端发送的数据帧后,是需要对数据帧进行维护的,如将数据帧存储起来,那么在存储起来的前期,可以进行流量控制的;
本小节主要是分析数据帧存储前的流量控制原理;
主要分为3种类型控制:
- 抽样级别流控
- 链接级别流控
- 流级别流控
1、抽样级别流控概述 |
抽样级别流控:
- 指的是grpc-go/internal/transport/bdp_estimator.go文件中的bdpEstimator结构体;服务器端
- 服务器接收到客户端发送的数据帧后,会给客户端发送一个ping帧,客户端接收到ping帧后,会反馈一个ack类型的ping帧,可以认为这是一个周期,服务器端会计算在这个周期内一共接收了多少个数据帧
- 如果满足指定的条件时,就会触发相应的流程,给客户端发送窗口更新帧,从而影响客户端的发送数据帧的大小,实现了流控。