Criar arquiteturas orientadas a eventos com o Eventarc

É possível usar o Eventarc e o Firestore para criar arquiteturas orientadas a eventos. Os gatilhos do Firestore para o Eventarc geram eventos de mudanças em documentos específicos no seu banco de dados. O gatilho pode rotear eventos para um destino compatível:

Eventarc oferece uma solução padronizada para gerenciar o fluxo de alterações de estado, chamadas de eventos, entre microsserviços separados. Quando acionado, o Eventarc encaminha esses eventos para vários destinos, gerenciando a entrega, a segurança, a autorização, a observabilidade e o tratamento de erros para você.

Limitações

Observe as seguintes limitações para gatilhos do Firestore para o Eventarc:

  • Não garantimos acionamentos em ordem. Mudanças rápidas podem acionar eventos em uma ordem inesperada.
  • Os eventos são entregues pelo menos uma vez.

    Verifique se o manipulador de eventos é idempotente e evite produzir resultados inesperados ou efeitos colaterais quando um evento é entregue mais de uma vez. Consulte Como criar funções idempotentes para saber mais.

  • Um gatilho está associado a um único banco de dados. Não é possível criar um gatilho que corresponda a vários bancos de dados.

  • A exclusão de um banco de dados não remove automaticamente nenhum gatilho dele. O acionador deixa de entregar eventos, mas continua existindo até que você o exclua. Se o banco de dados for recriado, todos os gatilhos associados também precisarão ser excluídos e recriados para restaurar a entrega de eventos.

Locais do Eventarc e do Firestore

O Eventarc não oferece suporte a multirregiões para gatilhos de eventos do Firestore no modo nativo, mas ainda é possível criar gatilhos para bancos de dados do Firestore em locais multirregionais. O Eventarc mapeia os locais multirregionais do Firestore para as seguintes regiões do Eventarc:

Multirregião do Firestore Região do Eventarc
nam5 us-central1
eur3 europe-west4

Diferenças entre as funções do Cloud Run de 2ª e 1ª geração

As funções do Cloud Run (2ª geração) usam eventos do Eventarc para todos os ambientes de execução. Antes, as funções do Cloud Run (1ª geração) usavam eventos do Eventarc apenas para alguns ambientes de execução. Os eventos do Eventarc apresentam as seguintes diferenças em relação às funções do Cloud Run (1ª geração).

  • Os gatilhos do Firestore para o Eventarc são compatíveis com outros destinos além das funções do Cloud Run. É possível encaminhar CloudEvents para vários destinos, incluindo, sem limitação, o Cloud Run, o GKE e o Workflows.

  • Os acionadores do Firestore para o Eventarc recuperam a definição do acionador no início de uma operação de gravação do banco de dados e usam essa definição para decidir se o Firestore deve emitir um evento. A operação de gravação não considera mudanças na definição do gatilho que possam ocorrer durante a execução.

    O Cloud Run functions (1ª geração) recupera a definição do gatilho durante a avaliação da gravação do banco de dados, e as mudanças no gatilho durante a avaliação podem afetar se o Firestore emite um evento ou não.

Interoperabilidade de eventos do modo Datastore e do modo nativo

O Eventarc é compatível com gatilhos de eventos para o modo Datastore e o modo nativo. Esses gatilhos de eventos são interoperáveis com os dois tipos de banco de dados. Um banco de dados do Firestore no modo nativo pode receber eventos do Datastore, e um banco de dados do Firestore no modo Datastore pode receber eventos do modo nativo.

Com a interoperabilidade de eventos, é possível compartilhar código do Eventarc em bancos de dados do Firestore de diferentes tipos.

Conversões de evento

Se você aplicar um gatilho de evento do modo nativo a um banco de dados do modo Datastore, o Eventarc fará as seguintes conversões:

  • O namespace da entidade é armazenado no atributo PartitionId do evento.
  • As entidades incorporadas são convertidas em tipos map do modo nativo.

A seguir