Сквозная обработка Ровно один раз в Apache Flink

Apache Flink гарантирует однократную обработку после сбоя и восстановление путем возобновления задания с контрольной точки, при этом контрольная точка представляет собой согласованный моментальный снимок распределенного потока данных и состояния оператора (алгоритм Чанди-Лэмпорта для распределенных моментальных снимков). Гарантия один раз при отработке отказа.

В случае нормальной работы кластера, как Flink гарантирует только однократную обработку, например, учитывая источник Flink, который читает из внешнего источника (скажем, Kafka), как Flink гарантирует, что событие будет прочитано один раз из источника? есть ли какое-либо подтверждение уровня приложения между источником события и источником Flink? Кроме того, как Flink гарантирует, что события передаются ровно один раз от операторов восходящего потока к нижестоящим операторам? Требует ли это каких-либо подтверждений для полученных событий?


person Mazen Ezzeddine    schedule 30.09.2020    source источник


Ответы (1)


Flink не гарантирует, что каждое событие будет прочитано из источников один раз. Вместо этого он гарантирует, что каждое событие влияет на управляемое состояние ровно один раз.

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

Таким образом, гарантия ровно один раз Flink требует воспроизводимых источников. Ровно однажды обмен сообщениями между операторами зависит от tcp.

Чтобы гарантировать, что приемники не получат повторяющиеся результаты, в дальнейшем требуются транзакционные приемники. Flink совершает транзакции как часть контрольной точки.

person David Anderson    schedule 30.09.2020
comment
1. Таким образом, единовременная доставка и (полное упорядочение) сообщений между операторами Flink гарантируется TCP. 2. Можно ли утверждать, что сквозная обработка в Flink не требует какого-либо снижения производительности, за исключением того, что вызвано транзакционными стоками (двухфазная фиксация)? Спасибо. - person Mazen Ezzeddine; 03.10.2020