Прежде всего, Flink может гарантировать единовременную согласованность только в одном конце, если источники и приемники поддерживают это.Если вы используете потребитель Flink's Kafka, Flink может гарантировать, что внутреннее состояние приложения точно в один раз.Для достижения полной сквозной согласованности ровно один раз, приемник также должен должным образом поддерживать это.Вы должны проверить реализацию приемника MongoDB, если он работает правильно.
Барьеры контрольных точек отправляют регулярные сообщения по каналам передачи данных, т. Е. Барьер для контрольной точки n
разделяет поток на записи, которые отправляютсяв контрольно-пропускной пункт n
и n + 1
.Оператор приемника будет обрабатывать барьер между двумя вызовами invoke()
и запускать бэкэнд состояния для выполнения контрольной точки.Затем это зависит от состояния сервера, может ли и как он может выполнить контрольную точку асинхронно.Как только вызов для запуска контрольной точки возвращается, приемник может продолжить обработку.Оператор приемника сообщит JobManager о том, что он завершил контрольное указание своего состояния, как только он получит уведомление от бэкэнда состояния.Общая контрольная точка завершается, когда все операторы успешно сообщили, что они завершили свои контрольные точки.
В этом сообщении в блоге более подробно обсуждается сквозная обработка ровно один раз и требования к операторам приемника.