Ereignisgesteuerte Architekturen mit Eventarc

Sie können Eventarc und Firestore im Datastore-Modus verwenden, um ereignisgesteuerte Architekturen zu erstellen. Firestore im Datastore-Modus bietet Trigger für Eventarc, die Ereignisse aus Änderungen an einer bestimmten Entität in Ihrer Datenbank generieren. Der Trigger kann Ereignisse an ein unterstütztes Ziel weiterleiten:

Eventarc bietet eine standardisierte Lösung, um den Ablauf der Statusänderungen, die sogenannten Ereignisse, zwischen entkoppelten Mikrodiensten zu verwalten. Bei Auslösung leitet Eventarc diese Ereignisse an verschiedene Ziele weiter und verwaltet dabei die Bereitstellung, Sicherheit, Autorisierung, Beobachtbarkeit und Fehlerbehandlung.

Beispielanwendungsfälle

Eine ereignisgesteuerte Architektur ist ein Systemdesignmuster, bei dem Dienste auf Statusänderungen reagieren, die als Ereignisse bezeichnet werden. Sie können dieses Muster zusammen mit der Skalierbarkeit von Firestore verwenden, um Ihrer App weitere Funktionen hinzuzufügen. Sie könnten beispielsweise die folgenden Funktionen hinzufügen:

  • Interoperabilität zwischen verschiedenen Technologiestacks

    Daten replizieren und transformieren, bevor sie an ein Analysesystem gesendet werden.

  • Parallelverarbeitung

    Hiermit können Sie Vorgänge für die parallele Verarbeitung verzweigen. Wenn Sie mehrere Systeme haben, die auf Grundlage von Entitätsänderungen arbeiten, können Sie die pushbasierten Streams in jedem Verbraucher verwenden und das Ereignis an mehrere Verbraucher weiterleiten.

  • Push-basierte Ereignisstreams

    Push-Nachrichten-Designs erstellen Clients können Benachrichtigungen erhalten, ohne Remotedienste abfragen zu müssen. Ohne die Polling-Latenz können Sie die Daten direkt verarbeiten und in Echtzeit analysieren.

  • Statusüberwachung und -benachrichtigungen

    Verwenden Sie eine ereignisbasierte Architektur, um Ihren Datenbankabläufen benutzerdefinierte Messwerte hinzuzufügen. Änderungen und Updates beobachten und Benachrichtigungen dazu erhalten Anomalien erkennen

Beschränkungen

Beachten Sie die folgenden Einschränkungen für Trigger im Datastore-Modus für Eventarc:

  • Die Reihenfolge ist nicht garantiert. Schnelle Änderungen können Ereignisse in einer unerwarteten Reihenfolge auslösen.
  • Ereignisse werden mindestens einmal gesendet.

    Achten Sie darauf, dass Ihr Ereignis-Handler idempotent ist, und vermeiden Sie unerwartete Ergebnisse oder Nebenwirkungen, wenn ein Ereignis mehrmals gesendet wird. Weitere Informationen finden Sie unter Idempotente Funktionen erstellen.

  • Ein Trigger ist mit einer einzelnen Datenbank verknüpft. Sie können keinen Trigger erstellen, der mit mehreren Datenbanken übereinstimmt.

  • Wenn Sie eine Datenbank löschen, werden nicht automatisch die Trigger für diese Datenbank gelöscht. Der Trigger sendet keine Ereignisse mehr, bleibt aber bestehen, bis Sie ihn löschen.

Standorte für Eventarc und Firestore im Datastore-Modus

Eventarc unterstützt keine Mehrfachregionen für Firestore-Ereignistrigger. Sie können jedoch weiterhin Trigger für Firestore-Datenbanken an Standorten mit mehreren Regionen erstellen. In Eventarc werden Firestore-Standorte mit mehreren Regionen den folgenden Eventarc-Regionen zugeordnet:

Firestore multiregional Eventarc-Region
nam5 us-central1
eur3 europe-west4

Interoperabilität von Ereignissen im Datastore-Modus und im nativen Modus

Eventarc unterstützt Ereignistrigger sowohl für den Datastore-Modus als auch für den nativen Modus. Diese Ereignistrigger sind mit beiden Datenbanktypen kompatibel. Eine Firestore-Datenbank im nativen Modus kann Datastore-Ereignisse empfangen und eine Firestore-Datenbank im Datastore-Modus kann native Ereignisse empfangen.

Mit der Ereignisinteroperabilität können Sie Eventarc-Code für Firestore-Datenbanken verschiedener Typen freigeben.

Ereignis-Conversions

Wenn Sie einen Ereignistrigger im nativen Modus auf eine Datenbank im Datastore-Modus anwenden, führt Eventarc die folgenden Umwandlungen durch:

  • Der Namespace der Entität wird im PartitionId-Attribut des Ereignisses gespeichert.
  • Eingebettete Entitäten werden in map-Typen des Native-Modus konvertiert.

Nächste Schritte