2016-09-13 5 views
3

Я использую стек Apache Flink + RabbitMQ. Я знаю о возможности ручного запуска точек сохранения и восстановления заданий от них, но проблема в том, что Flink подтверждает сообщения после успешной контрольной точки, и если вы хотите создать состояние сохранения и восстановления, вы теряете все данные между последней успешной точкой сохранения и последней успешной контрольной точкой , Есть ли способ восстановить работу с контрольно-пропускного пункта? Это позволило бы решить проблему потери данных в случае нереверсируемых источников данных (например, rabbitmq). Кстати, если у нас есть контрольно-пропускные пункты со всеми их накладными расходами, почему бы пользователям не использовать их?Восстановить работу Apache Flink с контрольной точки

ответ

4

Концептуально, точка сохранения - это не что иное, как контрольная точка плюс немного метаданных. В обоих случаях (Savepoint и Checkpoint) Flink создает согласованную контрольную точку состояния всех операторов, источников и стоков.

Контрольные точки считаются внутренним механизмом восстановления отказа. Однако контрольные точки могут быть configured to be externalized checkpoints. Внешние контрольные точки автоматически не очищаются, когда задание завершается и может быть использовано для ручного перезапуска программы.

Ваша проблема с источником RabbitMQ заключается в том, что он как бы нарушает семантику контрольной точки Флинка, поскольку она подталкивает какое-то состояние во внешнюю систему путем подбора контрольной точки, которая не может быть сброшена.

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

+0

Да, это решило бы мою проблему. Есть ли способ завершить работу после точки сохранения? – user3237732

+0

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

Смежные вопросы