Kafka Streams - задержка закрытия временного окна? - PullRequest
0 голосов
/ 30 января 2019

Я новичок в Kafka Streams.

Я использую метод подавления KTable для обработки только окончательного результата окна, подобного этому:

myStream
    .windowedBy(TimeWindows.of(Duration.ofSeconds(10)).grace(Duration.ofMillis(500)))
    .aggregate(new Aggregation(),
        (k, v, a) -> a,  // Disabled the actual aggregation in order to eliminate possiblities of latency
        materialized.withLoggingDisabled())
    .suppress(untilWindowCloses(Suppressed.BufferConfig.unbounded()))
    .toStream().peek((k, v) -> log.info("delay " + (System.currentTimeMillis() - k.window().endTime().toEpochMilli())));

Таким образом, яполучать журнал с задержкой каждые 10 секунд с разницей между концом окна и фактическим временем, когда был вызван просмотр.Я бы выделил здесь очень небольшое число, так как этот код практически ничего не делает ...

Тем не менее, я получаю задержку 4-20 секунд для каждого ключа / окна.

Я использую потокза задачу (5 тем по этой теме).

Может кто-нибудь указать, если я делаю что-то не так?

Спасибо!

Редактировать:

Использование VirtualVM показывает, что ~ 99% времени потребляется по сравнению с sun.nio.ch.SelectorImpl.select ().Это означает, что AFAIU, что процесс "простаивает" большую часть времени.

Редактировать:

Кажется, что изменение "commit.interval.ms" (который былпо умолчанию 30000) радикально уменьшило задержку.

Тем не менее задержка имеет пики события 15 секунд, поэтому проблема еще не решена ...

...