Оценка пропускной способности клиента Netty - PullRequest
0 голосов
/ 12 мая 2018

У меня есть следующие настройки. enter image description here

Netty Server получает трафик от стороннего клиента по каналу 10G. Я должен перенаправить этот трафик на другой хост с помощью клиента Netty по каналу 1G. Есть ли у netty какой-либо API, который я могу использовать для оценки скорости записи моего клиента Netty (ссылка 1G), чтобы я мог использовать эту информацию для ограничения пропускной способности моего сервера Netty (ссылка 10G)?

1 Ответ

0 голосов
/ 21 июня 2018

Правильный подход - использовать противодавление TCP, что означает, что ваш прокси не читает больше, чем может записать. Это достигается путем отправки сигнала TCP ACK только после того, как вы будете готовы получить больше.

Подход, основанный только на измерении пропускной способности, не подходит, поскольку он не имеет дело с временным ухудшением. (Такое измерение тривиально достичь, посчитав размер буферов в скользящем временном окне.)

Netty предлагает API для противодавления TCP, что вам нужно. Вам «просто» нужно включить автоматическое чтение с ChannelOption.AUTO_READ, установленным на false, и вызывать Channel.read() явно после успешной записи.

Я предлагаю вам внимательно посмотреть пример прокси Netty , который отключает AUTO_READ.

LittleProxy - более сложный фрагмент кода, который также контролирует пропускную способность.

...