Я пытаюсь понять процесс, в котором Dataflow будет подтверждать сообщения pubsub, и какие у меня есть гарантии для обработки всех данных независимо от того, произошел ли сбой.
Я понимаю, что Dataflow получит сообщение, когда сохранит его в каком-то постоянном хранилище, но я не совсем уверен, когда именно это произойдет.
Возьмем, к примеру, простой конвейер, читает сообщения из Pubsub, выполняет небольшое преобразование типа сообщения, чтобы преобразовать его во что-то легко записываемое (пардо), и сохраняет в текстовый файл в GCS. С панели мониторинга StackDriver кажется, что Dataflow является Acking-сообщениями, как только они поступают в конвейер, и резервное копирование выполняется только при записи последнего окна файлов. ![Unacked message dashboard](https://i.stack.imgur.com/lAh1X.png)
При этом я знаю, что при возникновении ошибки с сообщением задание потокового потока данных будет продолжаться до тех пор, пока сообщение не сработает, или конвейер не обновится , как указано здесь . Однако из-за необходимости надежности хранения сообщений происходит то, что происходит в сценарии, когда сам Dataflow или Beam сталкиваются с внутренней ошибкой, вызывающей сбой конвейера. Если сообщения записываются в какое-то постоянное хранилище (не мое конечное хранилище GCS), сможет ли новый конвейер их забрать?
TLDR : Что происходит в случае полного сбоя самого потока данных. Будут ли потеряны эти сообщения, которые, по-видимому, будут подтверждены по мере их поступления или будут заменены?
Примечание: я прочитал ответ, данный здесь , но, похоже, речь идет о случае отказа за шаг до полного отказа.