Протокол двухфазной фиксации с двумя приемниками - PullRequest
1 голос
/ 06 января 2020

Мне интересно получить более подробную информацию о том, как протокол двухфазной фиксации работает во Flink при наличии нескольких приемников. Меня интересуют два случая:

  1. Когда оба приемника поддерживают 2P C
  2. Когда один из них поддерживает 2P C, а другой - не

Гарантируется ли, что распределенная транзакция предназначена для всех приемников, или у нас разные транзакции для приемника? Другими словами, если оба поддерживают 2P C, один из приемников выходит из строя, а другой способен зафиксировать, что произойдет?

1 Ответ

1 голос
/ 06 января 2020

В Flink каждый приемник отвечает за собственное управление состоянием, что включает в себя реализацию любого протокола 2P C. Это разделение необходимо, поскольку некоторые приемники вообще не поддерживают 2P C.

Когда в Flink срабатывает контрольная точка, приемники 2P C запускают предварительную передачу. Только если эта предварительная передача прошла успешно, контрольная точка продолжает использоваться. Когда контрольная точка всего графа выполнения была успешно взята (состояние всех сохраненных операторов / UDF), в качестве последней фазы контрольной точки, приемники выполнят фактическое принятие.

Возвращаясь к вашему вопросу: если какой-либо из приемников не будет зафиксирован, контрольная точка завершится сбоем, а вместе с ней и все приложение Flink, и она будет перезапущена с последней успешно пройденной контрольной точки.

...