Относительно отказоустойчивости для оператора подавления в KTable - PullRequest
0 голосов
/ 08 января 2019

Мы планируем использовать оператор подавления над сеансным оконным KTable. Нас интересует отказоустойчивость при использовании оператора подавления.

Мы понимаем, что буфер используется для хранения событий / агрегатов, пока окно не закроется. Теперь допустим, что произошел перебаланс, и активная задача перенесена на другую машину. Нам интересно, что происходит с этим (в памяти?) Буфером.

Допустим, мы отслеживаем количество кликов по пользователям. И мы настроили период активности окна сеанса равным 3 минутам, и окно сеанса началось для ключевой алисы, и агрегации происходили для этого ключа в течение 2 минут. Например, в буфере у нас есть (alice -> 5) запись, представляющая, что Алиса уже сделала 5 кликов в этом сеансе.

И скажите, что после этого Алиса не предпринимает никаких действий.

Если все работает нормально, то после завершения сеанса нисходящий процессор получит событие алиса -> 5.

Но что, если сейчас произойдет перебалансировка и активная задача, поддерживающая окно сеанса для Алисы, будет перенесена на новую машину? Поскольку от Алисы больше нет действий, будет ли нижестоящий процессор, работающий на новой машине, пропустить это событие Алиса -> 5?

1 Ответ

0 голосов
/ 10 января 2019

Оператор подавления обеспечивает отказоустойчивость аналогично любому другому хранилищу состояний в Streams. Хотя активная структура данных находится в памяти, буфер подавления поддерживает журнал изменений (внутренняя тема Kafka).

Итак, когда у вас есть этот баланс, предыдущее активное задание сбрасывает свое состояние в журнал изменений и удаляет буфер в памяти. Новая активная задача воссоздает состояние путем воспроизведения темы журнала изменений, в результате чего содержимое буферизуется точно так же, как если бы не было перебалансировки.

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

Имеет ли это смысл?

...