Как эффективно запустить потоки kafka с одним экземпляром приложения и разделами с одной темой? - PullRequest
0 голосов
/ 29 января 2019

Текущая настройка - я передаю данные из 16 разделенных разделов, выполняю соединения KTable-KTable и отправляю вывод с агрегированными данными из всех потоков.Я также материализую каждый KTable в локальное хранилище состояний.

Сценарии -

  • Когда я попытался запустить два экземпляра приложения, я ожидал, что потоки kafka будут работать на одномэкземпляр, но по какой-то причине он работал и на другом экземпляре.Похоже, что он может создать потоковую задачу на другом экземпляре приложения во время сбоя потоков kafka на экземпляре # 1 во время исключения некоторых потоков.Большое отставание по темам было очищено, но когда я запрашиваю хранилище агрегированных данных через interactiveQueryService, я вижу, что несколько потоков данных отсутствуют.Похоже, он создал хранилище состояний для нескольких потоков в экземпляре № 2.Хотя не уверен.

  • Когда я пытаюсь запустить один экземпляр с таким большим отставанием, я вижу все виды исключений - исключение тайм-аута, исключение RecordTooLarge.Для исключения recordtoolarge я внедрил обработчик productionexception, чтобы перехватить исключение и продолжить.Но, похоже, время истекло, а KafkaStreams не падает -

    1. org.apache.kafka.common.errors.TimeoutException: не удалось обновить метаданные после 60000 мс.Вы можете увеличить параметр производителя
      retries и retry.backoff.ms, чтобы избежать этой ошибки.
    2. Срок действия 5 записей для раздела 0: 381960 мс прошло с момента последнего добавления;Больше записей не будет отправлено, и больше смещений для этой задачи не будет записано.
    3. Прервать отправку, поскольку ошибка, обнаруженная в предыдущей записи (значение ключа 1 [B @ 2 timestamp 1548700011925), добавлена ​​в тему abc-xyz-store-changelog из-за org.apache.kafka.common.errors.TimeoutException: не удалось обновить метаданные через 60000 мс.

текущие конфигурации -

  • retry.backoff.ms: 5000 request.timeout.ms: 300000 повторов: 5 commit.interval.ms: 1000 PROCESSING_GUARANTEE: at_least_once

Все остальные значения по умолчанию, как -

  • MAX_POLL_INTERVAL_MS: 2147483647 MAX_POLL_RECORDS: 1000 BATCH_SIZE: 16384 NUM_STREAM_THREADS: 1 LINGER_MS: 100 MAX_BLOCK_MS: 60000 MAX_IN_FLIGHT_REQ медленно, даже 1030 * * 10 *, даже если вы не работаете, даже 530 * *, даже если вы не работаете, даже если вы не в курсе, даже если вы не наберете 1030 * *, вы даже не захотите сделать это, пока не разберетесь, даже если вы не захотите сделать это, пока не разберетесь, даже если вы не наберете 1030 * *, даже если вы не в состоянии обработать, даже если вы не наберете 1030 * *, даже если вы не в курсе, даже если вы не в состоянии сделать это, вы даже не захотите - даже 1036 *чтобы убрать отставание.
...