Ereignisgesteuerte Architekturen mit Eventarc erstellen

Sie können mit Eventarc und Firestore ereignisgesteuerte Architekturen erstellen. Firestore-Trigger für Eventarc generieren Ereignisse aus Änderungen an einem bestimmten Dokument in Ihrer Datenbank. Der Trigger kann Ereignisse an ein unterstütztes Ziel weiterleiten:

Eventarc bietet eine standardisierte Lösung zur Verwaltung des Ablaufs von Statusänderungen, sogenannten Ereignissen, zwischen entkoppelten Mikrodiensten. Wenn sie ausgelöst wird, leitet Eventarc diese Ereignisse an verschiedene Ziele weiter und verwaltet die Bereitstellung, Sicherheit, Autorisierung, Beobachtbarkeit und Fehlerbehandlung für Sie.

Beschränkungen

Beachten Sie die folgenden Einschränkungen für Firestore-Trigger 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 der Event-Handler idempotent ist und vermeiden Sie unerwartete Ergebnisse oder Nebeneffekte, wenn ein Ereignis mehrmals gesendet wird. Weitere Informationen finden Sie unter Idempotente Funktionen erstellen.

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

  • Durch das Löschen einer Datenbank werden die Trigger für diese Datenbank nicht automatisch gelöscht. Der Trigger sendet keine Ereignisse mehr, bleibt aber bestehen, bis Sie den Trigger löschen.

Eventarc- und Firestore-Standorte

Eventarc unterstützt keine regionsübergreifenden Trigger für Firestore-Ereignis-Trigger. Sie können aber trotzdem Trigger für Firestore-Datenbanken an multiregionalen Standorten erstellen. Eventarc ordnet multiregionale Firestore-Standorte den folgenden Eventarc-Regionen zu:

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

Unterschiede zwischen Cloud Functions (2nd gen) und 1st gen

Cloud Functions (2nd gen) verwendet Eventarc-Ereignisse für alle Laufzeiten. Bisher verwendete Cloud Functions (1. Generation) Eventarc-Ereignisse nur für einige Laufzeiten. Mit Eventarc-Ereignissen werden die folgenden Unterschiede im Vergleich zu Cloud Functions (1. Generation) eingeführt.

  • Die Firestore-Trigger für Eventarc unterstützen neben Cloud Functions weitere Ziele. Sie können CloudEvents an eine Reihe von Zielen weiterleiten, einschließlich, aber nicht beschränkt auf Cloud Run, GKE und Workflows.

  • Firestore-Trigger für Eventarc rufen die Triggerdefinition zu Beginn eines Datenbankschreibvorgangs ab und entscheiden anhand dieser Definition, ob Firestore ein Ereignis ausgeben soll. Der Schreibvorgang berücksichtigt keine Änderungen an der Triggerdefinition, die während der Ausführung auftreten können.

    Cloud Functions (1. Generation) ruft die Triggerdefinition während der Auswertung des Datenbankschreibvorgangs ab. Änderungen am Trigger während der Bewertung können sich darauf auswirken, ob Firestore ein Ereignis ausgibt.

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

Eventarc unterstützt Ereignistrigger sowohl für den Datastore-Modus als auch den nativen Modus. Diese Ereignistrigger sind mit beiden Datenbanktypen interoperabel. Eine Firestore-Datenbank im nativen Modus kann Datastore-Ereignisse empfangen und eine Firestore-Datenbank im Datastore-Modus kann Ereignisse im nativen Modus 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 Konvertierungen aus:

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

Nächste Schritte