Pipeline-Streamingmodus festlegen

Dataflow unterstützt zwei Modi für Streamingjobs:

  • Genau einmal-Modus. Dieser Modus ist der Standard für alle Dataflow-Streamingjobs. In diesem Modus sorgt Dataflow dafür, dass Datensätze nicht gelöscht oder dupliziert werden, wenn sich die Daten durch die Pipeline bewegen.
  • Mindestens-einmal-Modus. Dieser Modus garantiert, dass Datensätze mindestens einmal verarbeitet werden (d. h., es gehen keine Eingabedatensätze verloren). In diesem Modus sind jedoch doppelte Datensätze möglich. Bei Anwendungsfällen, die Duplikate tolerieren können, kann der "Mindestens einmal"-Modus die Kosten und die Latenz Ihres Jobs erheblich senken.

Streamingmodus auswählen

Wählen Sie den „Genau einmal“-Modus aus, wenn Sie genaue Ergebnisse aus der Pipeline und vorhersehbare Semantik benötigen. Beispiel:

  • Pipelines mit Aggregationen wie Anzahl, Summe oder Mittelwert.
  • Geschäftskritische Anwendungsfälle, bei denen Datensätze nur einmal verarbeitet werden müssen. Beispiele sind die Betrugserkennung, die Erkennung von Netzwerkbedrohungen und E-Commerce-Inventar-Dashboards.

Wählen Sie den "Mindestens einmal"-Streamingmodus aus, wenn Ihre Arbeitslast doppelte Datensätze tolerieren kann und von geringeren Kosten oder Latenzen profitieren könnte. Beispiel:

  • Arbeitslasten, bei denen die Deduplizierung nach Dataflow erfolgt. Beispiel: Pipelines, die in BigQuery oder einen SQL-Datenspeicher schreiben.
  • Reine Zuordnungspipelines ohne Aggregationen. Beispiele sind Logverarbeitungs-, Change Data Capture- oder ETL-Jobs (Extrahieren, Transformieren und Laden), bei denen die Pipeline nur Transformationen pro Element ausführt, wie z. B. Schemaübersetzung.
  • Pipelines, bei denen die Ausgabesenke keine genau einmalige Übermittlung garantieren kann, z. B. Pub/Sub. In diesem Fall ist die Deduplizierung innerhalb der Pipeline möglicherweise nicht erforderlich und Sie können von den geringeren Kosten und der Latenz des "Mindestens einmal"-Streamingmodus profitieren.
  • Pipelines, die aus Pub/Sub lesen. Das Lesen aus Pub/Sub wird bei Verwendung des "Mindestens einmal"-Modus erheblich optimiert.

Weitere Hinweise

  • Der "Mindestens einmal"-Modus kann die Kosten und die Latenz einer Pipeline erheblich reduzieren. Die genaue Auswirkung hängt von den Besonderheiten der Pipeline ab. Testen Sie mindestens einmaliges Streaming unter realistischen Lasten, um die Auswirkungen zu bewerten.

  • Im "Mindestens einmal"-Modus hängt die Rate doppelter Einträge von der Anzahl der Wiederholungen ab. Die Basisrate ist normalerweise niedrig (< 1%). Spitzen können jedoch auftreten, wenn Worker-Knoten ausfallen oder andere Bedingungen zu wiederholten RPC-Aufrufen führen.

  • Der Streaming-Modus wirkt sich darauf aus, wie Streaming Engine Datensätze verarbeitet, ändert jedoch nicht die Semantik von E/A-Connectors. Es wird empfohlen, die E/A-Semantik an den Streaming-Modus anzupassen. Wenn Sie beispielsweise den "Mindestens einmal"-Streamingmodus mit dem BigQuery-E/A-Connector verwenden, legen Sie den Schreibmodus auf STORAGE_API_AT_LEAST_ONCE fest. Von Google bereitgestellte Dataflow-Vorlagen aktivieren diese Option automatisch, wenn Sie mindestens einmaliges Streaming verwenden.

  • Elementbezogene Transformationen wie Map sind nicht immer idempotent. Angenommen, eine Funktion empfängt eine Nachricht und hängt den aktuellen Zeitstempel an diese an. In diesem Fall kann ein doppelter Eintrag zu mehreren unterschiedlichen Ausgaben führen. Der "Mindestens einmal"-Modus ist für diese Pipeline möglicherweise nicht geeignet.

Streamingmodus festlegen

Die genau einmalige Verarbeitung ist die Standardeinstellung für alle Dataflow-Jobs. Legen Sie die Dienstoption streaming_mode_at_least_once fest, um den "Mindestens einmal"-Streamingmodus zu aktivieren.

Java

--dataflowServiceOptions=streaming_mode_at_least_once

Python

--dataflow_service_options=streaming_mode_at_least_once

Einfach loslegen (Go)

--dataflow_service_options=streaming_mode_at_least_once

Wenn Sie die Option streaming_mode_at_least_once nicht angeben, verwendet Dataflow den „Genau einmal“-Streamingmodus.

Wenn Sie die Option streaming_mode_at_least_once festlegen, aktiviert Dataflow automatisch Streaming Engine mit ressourcenbasierter Abrechnung.

Um den Streaming-Modus für einen laufenden Job zu aktualisieren, beenden Sie den vorhandenen Job und führen Sie einen Ersatzjob aus. Weitere Informationen finden Sie unter Ersatzjob starten.

Streamingmodus für eine Vorlage auswählen

Führen Sie die folgenden Schritte aus, um beim Ausführen einer Dataflow-Streaming-Vorlage den Streaming-Modus auszuwählen:

Console

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

  2. Klicken Sie auf Job aus Vorlage erstellen.

  3. Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Vorlage aus, die Sie ausführen möchten.

  4. Wählen Sie unter Streamingmodus den Streamingmodus aus. Wenn die Vorlage nur einen Modus unterstützt, ist diese Option deaktiviert.

gcloud

Wenn Sie den "Mindestens einmal"-Modus aktivieren möchten, geben Sie im Flag additional-experiments die Option streaming_mode_at_least_once an:

--additional-experiments=streaming_mode_at_least_once

Wenn Sie den genau einmaligen Modus aktivieren möchten, legen Sie im Flag additional-experiments die Option streaming_mode_exactly_once fest:

--additional-experiments=streaming_mode_exactly_once

Diese beiden Optionen schließen sich gegenseitig aus. Wenn Sie keine dieser Optionen festlegen, verwendet die Vorlage standardmäßig den Streamingmodus, der durch die Vorlagenmetadaten bestimmt wird. Weitere Informationen finden Sie unter Benutzerdefinierte Vorlagen.

REST

Verwenden Sie das Feld additionalExperiments im Objekt FlexTemplateRuntimeEnvironment (Flex-Vorlagen) oder RuntimeEnvironment (klassische Vorlagen).

{
  additionalExperiments : ["streaming_mode_at_least_once"]
  ...
}

Benutzerdefinierte Vorlagen

Wenn Sie eine benutzerdefinierte Vorlage erstellen, die die mindestens einmalige Verarbeitung unterstützt, fügen Sie der Metadatendatei der Vorlage die folgenden Felder der obersten Ebene hinzu:

{
  "streaming": true,
  "supportsAtLeastOnce": true,
  "supportsExactlyOnce": true,
  "defaultStreamingMode": "AT_LEAST_ONCE"
}

Mit diesen Metadatenfeldern können Nutzer den Streamingmodus auswählen, wenn sie die Vorlage in der Google Cloud Console bereitstellen. Das Feld defaultStreamingMode ist optional und gibt den Standard-Streamingmodus für die Vorlage an. Wenn Sie defaultStreamingModeg nicht angeben und die Vorlage beide Modi unterstützt, wird der "Genau einmal"-Modus standardmäßig verwendet.

Weitere Informationen finden Sie in den folgenden Abschnitten der Dokumentation zu Dataflow-Vorlagen:

Streamingmodus eines Jobs ansehen

Rufen Sie in der Google Cloud Console die Seite Jobs auf, um sich den Streaming-Modus für einen Job anzeigen zu lassen.

ZU JOBS

Der Streamingmodus wird auch auf der Seite mit den Jobdetails im Bereich Jobinformationen aufgeführt.

Beschränkungen

Für den "Mindestens einmal"-Streamingmodus ist Streaming Engine mit ressourcenbasierter Abrechnung erforderlich.

Preise

Im "Mindestens einmal"-Modus wird immer die ressourcenbasierte Abrechnung verwendet. Dabei werden Ihnen die Gesamtressourcen in Rechnung gestellt, die von Ihrem Job verbraucht werden.

Die Kosten pro Einheit für Streaming Engine-Recheneinheiten sind unabhängig vom Streamingmodus identisch. In den meisten Fällen verbraucht eine Pipeline jedoch deutlich weniger Gesamtressourcen, wenn der "Mindestens einmal"-Modus verwendet wird.

Nächste Schritte