Ereignisgesteuerte Architekturen mit Eventarc

Mit Eventarc und Firestore im Datastore-Modus zum Erstellen ereignisgesteuerten Architekturen. 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 eine unterstütztes Ziel haben:

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, in dem Dienste Statusänderungen, sogenannten Ereignissen, angepasst werden. Sie können dieses Muster zusammen mit dem Skalierbarkeit von Firestore, um Ihrer Anwendung weitere Features hinzuzufügen. Sie können beispielsweise die folgenden Funktionen hinzufügen:

  • Interoperabilität zwischen verschiedenen Technologiestacks

    Replizieren Sie Ihre Daten und transformieren Sie sie, bevor Sie sie an einen analysieren.

  • 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-basierte Nachrichtendesigns erstellen Clients können Benachrichtigungen erhalten, ohne Remotedienste abfragen zu müssen. Ohne die Abfragelatenz Datenverarbeitung und Analysen in Echtzeit besser durchführen können.

  • Statusüberwachung und -benachrichtigungen

    Verwenden Sie eine ereignisbasierte Architektur, um Ihren Datenbankabläufen benutzerdefinierte Messwerte hinzuzufügen. Änderungen und Updates im Blick behalten und Benachrichtigungen 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 bereitgestellt.

    Sicherstellen, dass der Event-Handler idempotent ist und keine unerwarteten Ergebnisse liefert oder Nebenwirkungen haben, wenn ein Ereignis mehr als einmal geliefert 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. Die Der Trigger liefert keine Ereignisse mehr. Er bleibt jedoch bestehen, bis Sie den Trigger löschen.

Standorte für Eventarc und Firestore im Datastore-Modus

Eventarc unterstützt keine Mehrfachregionen für Firestore-Ereignisse Trigger, aber Sie können trotzdem Trigger für Firestore-Datenbanken erstellen an multiregionalen Standorten. Eventarc-Zuordnung in Firestore Multiregionale Standorte in die folgenden Eventarc-Regionen:

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 empfangen und eine Firestore-Datenbank im Datastore-Modus kann Ereignisse im nativen Modus.

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 einen Datastore anwenden verwendet Eventarc folgende Conversions:

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

Nächste Schritte