Apache Storm: регулирующий носик в зависимости от конфигурации - PullRequest
0 голосов
/ 04 июля 2019

Моя топология читает из Kafka и выполняет HTTP-вызов во внешнюю систему.Скорость приема в Кафке составляет около 200 сообщений в секунду.Внешняя система поддерживает только 20 HTTP-вызовов в секунду.Как я могу ввести регулирование, чтобы болт, который делает HTTP-вызовы, обрабатывал только 20 сообщений в секунду?

1 Ответ

1 голос
/ 04 июля 2019

Вы можете использовать настройку topology.max.spout.pending для регулирования расхода в зависимости от того, сколько кортежей находится в полете в топологии.Параметр задается для каждого экземпляра, так что если у вас есть, например, 10 исполнителей, и вы установите максимум 100 кортежей, вы получите максимум 1000 кортежей в топологии.

Вы можете использовать метод resetTimeout вOutputCollector для предотвращения сбоя кортежей, которые вы хотите отложить из-за тайм-аута.

При этом вам, вероятно, нужно собирать сообщения в большие пакеты.Если вы можете обрабатывать только 20 сообщений в секунду, и у вас есть вход 200 в секунду, вы начнете отставать и никогда не догоняете.

...