Есть ли способ, позволяющий работающему приложению Flink получить статус обратного давления?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ, позволяющий работающему приложению Flink получить статус обратного давления?

Сообщение Anonymous »

Есть ли в Java-коде приложения Flink способ определить, испытывает ли приложение в данный момент противодавление? Flink создает показатели противодавления, которые мы можем отслеживать извне приложения, но в настоящее время я не нахожу в Java API ничего, что позволило бы самому приложению узнать, испытывает ли оно противодавление.
Причина, по которой мне это нравится, заключается в том, что у нас есть Java-приложение Apache Flink со встроенным в него динамическим ограничителем скорости. Ограничитель скорости построен на корзине токенов с эластичной емкостью. Если приложение использует все токены, корзина токенов со временем может увеличиться. Если приложение не использует токены, корзина токенов сжимается. Это позволяет приложению справляться с увеличением рабочей нагрузки, но без резких скачков скорости обработки. Это важно в нашем контексте, поскольку некоторые последующие приложения обладают эластичной емкостью, но им требуется время для выделения большего количества ресурсов по мере увеличения их нагрузки. Они аварийно завершают работу, если получают резкие скачки производительности нашего приложения.
Код для вызова ограничения скорости реализован следующим образом:

Код: Выделить всё

// Rate limiting, block until a token is available.
var tokenBucket = ThreadLocalsManager.getTokenBucket(
bucketConfig,
getRuntimeContext().getNumberOfParallelSubtasks()
);
long waitTimeMs = tokenBucket.blockUntilToken();
Метод blockUntilToken вызывает обратное давление в приложении Flink, которое не позволяет ему работать быстрее, чем позволяет корзина токенов. На каждый параллелизм приходится один сегмент токенов. Передача ему количества параллельных подзадач позволяет ему узнать, какую долю общей работы приложения может выполнить этот конкретный сегмент. В целом это работает очень хорошо.
Однако, если приложение испытывает противодавление по какой-либо причине, кроме ограничения скорости, оно не будет использовать все доступные ему токены. Это приводит к сокращению корзины токенов, хотя приложение отстает и создает отставание. Если бы статус обратного давления был доступен через Flink Java API, я мог бы использовать это, чтобы предотвратить сокращение корзины токенов в таких ситуациях.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ure-status
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»