Crea arquitecturas basadas en eventos con Eventarc
Puedes usar Eventarc y Firestore para compilar arquitecturas basadas en eventos. Los activadores de Firestore para Eventarc generan eventos a partir de los cambios en documentos específicos de tu base de datos. El activador puede enrutar eventos a un destino compatible:
- Cloud Run Functions (2ª gen.), que admite las bibliotecas cliente de Cloud y el SDK de Firebase
- Cloud Run
- Google Kubernetes Engine
- Workflows
Eventarc ofrece una solución estandarizada para administrar el flujo de cambios de estado, llamados eventos, entre microservicios separados. Cuando se activa, Eventarc enruta estos eventos a varios destinos mientras administra la entrega, la seguridad, la autorización, la observabilidad y el manejo de errores por ti.
Limitaciones
Ten en cuenta las siguientes limitaciones para los activadores de Firestore para Eventarc:
- No se garantiza el ordenamiento. Los cambios rápidos pueden activar eventos en un orden inesperado.
Los eventos se entregan al menos una vez.
Asegúrate de que tu controlador de eventos sea idempotente y evita producir resultados o efectos secundarios inesperados cuando un evento se entrega más de una vez. Consulta Cómo compilar funciones idempotentes para obtener más información.
Un activador se asocia con una sola base de datos. No puedes crear un activador que coincida con varias bases de datos.
Cuando se borra una base de datos, no se borra automáticamente ningún activador de la base de datos. El activador deja de entregar eventos, pero sigue existiendo hasta que lo borras. Si se vuelve a crear la base de datos, también se deberán borrar y volver a crear los activadores asociados para restablecer la entrega de eventos.
Ubicaciones de Eventarc y Firestore
Eventarc no admite multirregiones para los activadores de eventos de Firestore en modo nativo, pero puedes crear activadores para bases de datos de Firestore en ubicaciones multirregionales. Eventarc asigna las ubicaciones multirregionales de Firestore a las siguientes regiones de Eventarc:
Firestore multirregional | Región de Eventarc |
---|---|
nam5 |
us-central1 |
eur3 |
europe-west4 |
Diferencias entre las funciones de Cloud Run de 2ª gen. y 1ª gen.
Las funciones de Cloud Run (2ª gen.) usan eventos de Eventarc para todos los tiempos de ejecución. Anteriormente, las funciones de Cloud Run (1ª gen.) usaban eventos de Eventarc solo para algunos tiempos de ejecución. Los eventos de Eventarc presentan las siguientes diferencias con las funciones de Cloud Run (1ª gen.).
Los activadores de Firestore para Eventarc admiten destinos adicionales además de las funciones de Cloud Run. Puedes enrutar
CloudEvents
a varios destinos, incluidos, sin limitaciones, Cloud Run, GKE y Workflows.Los activadores de Firestore para Eventarc recuperan la definición del activador al inicio de una operación de escritura de la base de datos y usan esa definición para decidir si Firestore debe emitir un evento. La operación de escritura no tiene en cuenta los cambios en la definición del activador que puedan ocurrir durante su ejecución.
Cloud Run Functions (1ª gen.) recupera la definición del activador durante la evaluación de la escritura de la base de datos, y los cambios en el activador durante la evaluación pueden afectar si Firestore emite un evento o no.
Interoperabilidad de eventos del modo Datastore y el modo nativo
Eventarc admite activadores de eventos para el modo Datastore y el modo nativo. Estos activadores de eventos son interoperables con ambos tipos de bases de datos. Una base de datos de Firestore en modo nativo puede recibir eventos de Datastore, y una base de datos de Firestore en modo Datastore puede recibir eventos del modo nativo.
La interoperabilidad de eventos te permite compartir código de Eventarc en bases de datos de Firestore de diferentes tipos.
Conversiones de eventos
Si aplicas un activador de eventos en modo nativo a una base de datos en modo Datastore, Eventarc realiza las siguientes conversiones:
- El espacio de nombres de la entidad se almacena en el atributo
PartitionId
del evento. - Las entidades incorporadas se convierten en tipos
map
del modo nativo.
¿Qué sigue?
- Obtén más información sobre las arquitecturas controladas por eventos.