Hochverfügbarkeit für Streaming

Standardmäßig werden einige Backend Ressourcen von Dataflow-Streamingjobs in einer einzelnen Compute Engine-Zone ausgeführt. Dadurch sind diese Jobs anfällig für Datenverlust bei einem zonalen Ausfall. Durch die Streaming-Hochverfügbarkeit wird ein Streaming Engine-Job zu einer regionalen Ressource, indem der Backend-Status über mehrere Zonen in der Region hinweg repliziert wird. Wenn Sie die Streaming-Hochverfügbarkeit aktivieren, führt ein Ausfall in einer einzelnen Zone nicht dazu, dass Ihr Streamingjob ausfällt.

Unterstützung und Einschränkungen

Für die Streaming-Hochverfügbarkeit gelten die folgenden Anforderungen und Einschränkungen:

  • Streaming Engine erforderlich: Der Job muss eine Streamingpipeline sein, die Streaming Engine verwendet.
  • Regionale Worker-Platzierung erforderlich: Compute Engine-Worker müssen regionalplatziert werden. Wenn ein Job nur Worker in einer bestimmten Zone hat und diese Zone nicht mehr verfügbar ist, können keine Daten verarbeitet werden, da die Worker nicht verfügbar sind, obwohl der Backend-Status repliziert wird. Daher lehnt Dataflow Jobs ab, in denen eine bestimmte Worker-Zone angegeben ist (z. B. --workerZone, --worker_zone oder --zone), wenn die Streaming-Hochverfügbarkeit aktiviert ist.
  • Nur bei der Joberstellung konfiguriert:Sie können die Streaming-Hochverfügbarkeit nur aktivieren, wenn Sie einen neuen Job starten. Wenn Sie eine In-Place Pipelineaktualisierung durchführen, können Sie die Streaming Hochverfügbarkeit nicht aktivieren oder deaktivieren. Wenn Sie diese Einstellung für eine laufende Pipeline ändern möchten, führen Sie entweder eine automatische Aktualisierung durch, bei der die Pipeline beendet und ersetzt wird, oder beenden Sie die Pipeline oder leeren Sie sie und starten Sie einen neuen Job ohne das --update Flag.
  • Zusätzliche Verzögerung des Wasserzeichens: Wenn Sie die Streaming-Hochverfügbarkeit aktivieren, wird das Wasserzeichen eines Jobs erst dann weitergeschaltet, wenn die Daten sowohl verarbeitet als auch über Zonen hinweg repliziert wurden. Da das Wasserzeichen auf die zonenübergreifende Replikation wartet, kann es zu einer zusätzlichen Verzögerung des Wasserzeichens von einigen Sekunden kommen.
  • Ressourcenbasierte Abrechnung erforderlich: Für Jobs mit Streaming-Hochverfügbarkeit wird immer die ressourcenbasierte Abrechnung verwendet, nicht die Abrechnung nach verarbeiteten Daten. Obwohl für Jobs die ressourcenbasierte Abrechnung verwendet wird, fallen während der Vorschau keine zusätzlichen Kosten für die Streaming-Hochverfügbarkeit an. Weitere Informationen finden Sie unter Preise.

Streaming-Hochverfügbarkeit aktivieren

Wenn Sie die Streaming-Hochverfügbarkeit aktivieren möchten, wenn Sie einen neuen Dataflow-Streamingjob starten, legen Sie die requires_high_availability Dienstoption fest.

Java

--dataflowServiceOptions=requires_high_availability

Python

--dataflow_service_options=requires_high_availability

Go

--dataflow_service_options=requires_high_availability

gcloud

Wenn Sie eine Vorlage mit dem gcloud dataflow jobs run Befehl oder eine flexible Vorlage mit dem gcloud dataflow flex-template run Befehl ausführen, fügen Sie die --enable-streaming-engine und --additional-experiments Flags ein:

--enable-streaming-engine \
--additional-experiments=requires_high_availability

So führen Sie beispielsweise eine flexible Vorlage aus, bei der die Streaming-Hochverfügbarkeit aktiviert ist:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --template-file-gcs-location=TEMPLATE_LOCATION \
    --region=REGION \
    --parameters=KEY_1=VALUE_1,KEY_2=VALUE_2 \
    --enable-streaming-engine \
    --additional-experiments=requires_high_availability

Ersetzen Sie die folgenden Werte:

  • JOB_NAME: der Name Ihres Dataflow-Jobs
  • PROJECT_ID: Ihre Google Cloud Projekt-ID
  • TEMPLATE_LOCATION: der Cloud Storage-Pfad zu Ihrer Spezifikationsdatei für flexible Vorlagen
  • REGION: die Region , in der der Job ausgeführt wird
  • KEY_1=VALUE_1, KEY_2=VALUE_2: Schlüssel-Wert-Parameterpaare für die flexible Vorlage

Console

So aktivieren Sie die Streaming-Hochverfügbarkeit, wenn Sie eine Vorlage oder flexible Vorlage in der Google Cloud Console ausführen:

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

    Zu Jobs

  2. Klicken Sie auf Job aus Vorlage erstellen.

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

  4. Maximieren Sie Optionale Parameter.

  5. Geben Sie im Feld Zusätzliche Experimente requires_high_availability ein.

  6. Klicken Sie auf Job ausführen.

REST

Verwenden Sie das Feld additionalExperiments im RuntimeEnvironment Objekt oder im FlexTemplateRuntimeEnvironment Objekt, wenn Sie eine flexible Vorlage starten:

{
  "additionalExperiments": ["requires_high_availability"]
}

Failover-Verhalten

Im seltenen Fall eines zonalen Failovers kann es einige Sekunden bis einige Minuten dauern, bis der Durchsatz wieder normal ist, während der Job zu einem neuen primären Status wechselt und ein neues sekundäres Replikat in einer anderen Zone erstellt. Der Failover erfolgt automatisch, ohne dass Daten verloren gehen. Sie müssen nichts tun. Sie können Failover-Ereignisse anhand der Messwerte verfolgen, die unter Hochverfügbarkeit überwachenbeschrieben sind.

Quellen und Senken

Wenn Sie einen Dataflow-Job als regionale Ressource konfigurieren, werden die Quellen und Senken des Jobs nicht automatisch regional oder global. Sowohl regionale als auch globale Quellen und Senken funktionieren gut mit der Streaming-Hochverfügbarkeit, da keine von ihnen von einer einzelnen Zone abhängig ist. Die Verfügbarkeit der einzelnen Quellen oder Senken hängt von der Konfiguration des jeweiligen Dienstes ab:

  • Viele Google Cloud Quellen und Senken wie Pub/Sub, BigQuery und Google Cloud Managed Service for Apache Kafka bieten standardmäßig regionale oder globale Verfügbarkeit.
  • Wenn Sie benutzerdefinierte oder selbstverwaltete Quellen und Senken verwenden, z. B. selbst gehostetes Apache Kafka oder Apache Iceberg, müssen Sie deren regionale Verfügbarkeit unabhängig konfigurieren und verwalten.

Hochverfügbarkeit überwachen

Sie können den Hochverfügbarkeitsstatus Ihres Jobs in Cloud Monitoring mit dem Messwert dataflow.googleapis.com/job/high_availability_mode überwachen. Dieser boolesche Messwert enthält das Label status, das für den aktuellen Status des Jobs true und für die anderen Status false ist. Das Label status hat die folgenden möglichen Werte:

  • Disabled: Die Streaming-Hochverfügbarkeit ist für diesen Job nicht aktiviert.
  • Highly Available: Die Streaming-Hochverfügbarkeit ist aktiviert und der Backend-Status wird über Zonen hinweg repliziert.
  • Establishing High Availability: Der Backend-Status wird vorübergehend nicht repliziert (z. B. nach einem zonalen Ausfall), aber ein neues sekundäres Replikat wird erstellt.

Wenn Sie die Streaming-Hochverfügbarkeit aktivieren, werden die Standardmesswerte für das Dataflow-Wasserzeichen erst dann weitergeschaltet, wenn die Daten sowohl verarbeitet als auch über Zonen hinweg repliziert wurden. Weitere Informationen zum Aufrufen von Messwerten finden Sie unter Monitoring verwenden.

Preise

Während der Vorschau fallen keine zusätzlichen Kosten für die Nutzung der Streaming-Hochverfügbarkeit an.

Bei allgemeiner Verfügbarkeit wird die Replikationsnutzung zum gleichen Preis wie die Nutzung des primären Status in Rechnung gestellt. Die Statusnutzung wird als Teil der Streaming Engine-Recheneinheiten gemessen.

Nächste Schritte