Crea arquitecturas controladas por eventos con Eventarc
Puedes usar Eventarc y Firestore para compilar arquitecturas orientadas a eventos. Los activadores de Firestore para Eventarc generan eventos a partir de cambios en documentos específicos de tu base de datos. El activador puede enrutar eventos a un destino compatible:
- Funciones de Cloud Run (2ª gen.) que admiten 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 el controlador de eventos sea idempotente y evita producir resultados inesperados o efectos secundarios 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, 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 1ª y 2ª gen.
Las funciones de Cloud Run (2ª gen.) usan eventos de Eventarc para todos los entornos de ejecución. Anteriormente, las funciones de Cloud Run (1ª gen.) usaban eventos de Eventarc para solo algunos entornos 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, entre otros, Cloud Run, GKE y Workflows.Los activadores de Firestore para Eventarc recuperan la declaración del activador al comienzo de una operación de escritura en 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 ningún cambio en la definición de activación que pueda ocurrir mientras se ejecuta.
Las funciones de Cloud Run (1ª gen.) recuperan la definición del activador durante la valoración de la operación de escritura en la base de datos, y los cambios en el activador durante la valoración pueden afectar si Firestore emite un evento o no.
Interoperabilidad de eventos entre el 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 de modo nativo.
La interoperabilidad de eventos te permite compartir el código de Eventarc entre bases de datos de Firestore de diferentes tipos.
Conversiones de eventos
Si aplicas un activador de eventos de modo nativo a una base de datos de modo de 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 información sobre las arquitecturas controladas por eventos.