我有以下设置。

Netty Server正在通过10G链路接收来自第三方客户端的流量。我必须使用Netty客户端通过1G链路将此流量转发到其他主机。netty有没有什么API可以用来估计我的Netty客户端(1G链路)的写入速度,这样我就可以用这个信息来限制我的Netty服务器(10G链路)的带宽?
发布于 2018-06-22 03:19:15
正确的方法是使用TCP背压,这意味着您的代理不会读取超过它可以写入的内容。这是通过仅在准备好接收更多时发送TCP ACK信号来实现的。
仅基于吞吐量测量的方法不适合,因为它不能处理暂时的降级。(通过计算滑动时间窗口中缓冲区的大小,这样的测量是微不足道的。)
Netty提供了一个用于TCP背压的API,这正是您所需要的。你“只要”在ChannelOption.AUTO_READ设置为false的情况下打开自动读取,并在写入成功后显式地调用Channel.read()。
我建议您仔细看看禁用AUTO_READ的Netty's sample proxy。
LittleProxy是一段更复杂的代码,它还监视吞吐量。
https://stackoverflow.com/questions/50307561
复制相似问题