Как Dataflow обрабатывает подтверждение pubsub в случае сбоя Dataflow? - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь понять процесс, в котором Dataflow будет подтверждать сообщения pubsub, и какие у меня есть гарантии для обработки всех данных независимо от того, произошел ли сбой.

Я понимаю, что Dataflow получит сообщение, когда сохранит его в каком-то постоянном хранилище, но я не совсем уверен, когда именно это произойдет.

Возьмем, к примеру, простой конвейер, читает сообщения из Pubsub, выполняет небольшое преобразование типа сообщения, чтобы преобразовать его во что-то легко записываемое (пардо), и сохраняет в текстовый файл в GCS. С панели мониторинга StackDriver кажется, что Dataflow является Acking-сообщениями, как только они поступают в конвейер, и резервное копирование выполняется только при записи последнего окна файлов. Unacked message dashboard

При этом я знаю, что при возникновении ошибки с сообщением задание потокового потока данных будет продолжаться до тех пор, пока сообщение не сработает, или конвейер не обновится , как указано здесь . Однако из-за необходимости надежности хранения сообщений происходит то, что происходит в сценарии, когда сам Dataflow или Beam сталкиваются с внутренней ошибкой, вызывающей сбой конвейера. Если сообщения записываются в какое-то постоянное хранилище (не мое конечное хранилище GCS), сможет ли новый конвейер их забрать?

TLDR : Что происходит в случае полного сбоя самого потока данных. Будут ли потеряны эти сообщения, которые, по-видимому, будут подтверждены по мере их поступления или будут заменены?

Примечание: я прочитал ответ, данный здесь , но, похоже, речь идет о случае отказа за шаг до полного отказа.

1 Ответ

0 голосов
/ 04 апреля 2019

Потоковый поток данных будет повторять неудачные рабочие элементы, поэтому, если работник по какой-то причине отказывает, Поток данных будет повторять ту же работу и должен начинать работу с точки сбоя без потери данных.

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

...