Implementare il modello Outbox transazionale con Dataverse

Le soluzioni aziendali devono recapitare messaggi in modo affidabile quando si verificano modifiche ai dati in Dataverse. Questa architettura di riferimento illustra come implementare il modello Outbox transazionale con Dataverse per ridurre il rischio di perdita di messaggi e mantenere sincronizzati i sistemi integrati.

Tip

Questo articolo fornisce uno scenario di esempio e un'architettura di esempio generalizzata per illustrare come implementare la distribuzione affidabile di eventi da Dataverse. L'esempio di architettura può essere modificato per molti scenari e settori diversi.

Diagramma dell'architettura

Diagramma dell'architettura che illustra come Dataverse implementa il modello Outbox transazionale archiviando i record outbox nella stessa transazione delle modifiche dei dati aziendali e pubblicando messaggi in bus di servizio di Azure per l'elaborazione downstream.

Flusso di lavoro

I passaggi seguenti descrivono il flusso di lavoro illustrato nel diagramma dell'architettura di esempio:

  1. Si verifica un'operazione sui dati in Dataverse, ad esempio la creazione o l'aggiornamento di un record contatto. Questa operazione crea una transazione di database.
  2. Un plug-in sincrono di Dataverse si attiva in risposta a questo evento e crea un record in una tabella outbox all'interno di Dataverse come parte della stessa transazione.
  3. Se il plug-in viene eseguito correttamente, la transazione esegue il commit sia del record outbox che delle modifiche al record originale (ad esempio, Contact).
  4. Se l'esecuzione del plug-in ha esito negativo, viene eseguito il rollback dell'evento di dati originale e Dataverse non esegue il commit di alcuna modifica del record.
  5. Un plug-in asincrono si attiva in risposta alla creazione di un record nella tabella outbox in Dataverse e scrive un messaggio in una coda o un argomento di bus di servizio di Azure.
  6. Un consumer di messaggi è in ascolto dei messaggi da elaborare e inviarli a un sistema di destinazione.

Components

Dataverse è il sistema transazionale di origine autorevole in cui si verifica l'evento di dati e risiede la tabella outbox. Invia in modo asincrono messaggi al broker di messaggi usando un plug-in.

bus di servizio di Azure è il broker aziendale affidabile che riceve messaggi da Dataverse per essere elaborati dai sistemi riceventi.

  • Le code di messaggi sono ideali quando è presente un singolo ricevitore di un messaggio.
  • I topic sono ideali quando molti sottoscrittori possono elaborare lo stesso messaggio o richiedere criteri di filtro per elaborare i messaggi in modo selettivo.

Monitoraggio di Azure è una soluzione di monitoraggio completa per la raccolta, l'analisi e la risposta ai dati di monitoraggio dalle soluzioni cloud e locali. Usare le metriche predefinite per bus di servizio di Azure per monitorare il numero di messaggi in una coda o un topic o una coda di messaggi non recapitabili.

applicazione Azure Insights viene usato per il monitoraggio delle prestazioni dell'applicazione e può essere abilitato per i plug-in Dataverse per inviare i log di traccia a un'area di lavoro di Application Insights.

Opzioni alternative:

  • App per la logica di Azure: alternativa valida a basso codice per recapitare messaggi dalla tabella outbox al broker di messaggi se si vuole un controllo più preciso su quando attivare l'orchestrazione e il recapito del messaggio (ad esempio, micro-batching).
  • Funzioni di Azure: un'alternativa code-first che offre la massima flessibilità e scalabilità per gestire volumi più elevati e nuovi tentativi in caso di errori intermittenti.

Dettagli dello scenario

Le soluzioni aziendali spesso devono scambiare dati critici con altri sistemi tramite messaggi. Per garantire la coerenza tra sistemi, gestire l'operazione sui dati e il recapito dei messaggi come un'unica operazione atomica. Tuttavia, la maggior parte dei sistemi transazionali e broker di messaggi supporta raramente le transazioni distribuite o introduce un accoppiamento stretto che si vuole evitare. Senza una transazione distribuita, non esiste alcuna garanzia di affidabilità perché potrebbe verificarsi un errore durante l'invio del messaggio al broker dopo il commit di una transazione.

Il modello Outbox transazionale risolve questa sfida creando un messaggio nell'ambito della stessa transazione di database locale che aggiorna anche i dati aziendali. Un processo separato può quindi recapitare il messaggio dalla tabella outbox al broker di messaggi. I guasti del processo intermittenti non sono un problema. La tabella outbox archivia il messaggio in modo che non venga perso e il processo ritenta fino a quando non riesce.

Dataverse è una piattaforma dati low-code potente ed estendibile con archiviazione dati transazionale che può implementare questo modello per scenari critici di integrazione in uscita.

Considerations

Queste considerazioni implementano i pilastri di Power Platform Well-Architected, un insieme di principi guida che migliorano la qualità di un carico di lavoro. Altre informazioni in Microsoft Power Platform Well-Architected.

Reliability

Questo modello aumenta significativamente l'affidabilità, garantisce il recapito at-least-once e la coerenza finale garantendo la coerenza transazionale. Basandosi su un broker di messaggi, protegge i sistemi downstream dal sovraccarico controllando il flusso di dati tra sistemi di origine e di destinazione e protegge da problemi di disponibilità dei sistemi downstream.

Quando è necessario l'ordinamento dei messaggi, abilitare le sessioni di bus di servizio di Azure nella coda o nella sottoscrizione. Il producer deve assegnare un Id sessione coerente, ad esempio il record Dataverse o l'ID aggregato, ai messaggi correlati in modo che vengano elaborati in ordine all'interno di tale sessione. Progettate i consumer per l'elaborazione idempotente, in quanto questo modello fornisce la consegna almeno una volta e potrebbero verificarsi messaggi duplicati. Se il rilevamento di eventi mancanti o non in sequenza è importante, i messaggi possono includere un numero di sequenza a livello di applicazione. Le garanzie di ordinamento si applicano all'interno di una sessione anziché a livello globale e la soluzione deve definire il modo in cui i tentativi e i messaggi non recapitati influiscono sull'elaborazione successiva per tale sessione.

Security

Usando i servizi di Azure, Dataverse può eseguire l'autenticazione al broker di messaggi (bus di servizio di Azure) tramite le identità gestite di Azure tramite la funzionalità di identità gestita di Power Platform. Questo approccio elimina il rischio di archiviare credenziali sensibili e i tempi di inattività causati dalla rotazione dei secret.

Efficienza prestazionale

L'uso di un broker di messaggi, ad esempio bus di servizio di Azure, consente di livellare il carico per garantire che le applicazioni downstream non vengano sovraccaricate durante periodi di volume elevato.

Prendere in considerazione l'uso di una funzione Azure su un plug-in Dataverse asincrono per inviare messaggi a bus di servizio di Azure se i volumi diventano molto elevati. Questo approccio offre la massima scalabilità e flessibilità per elaborare un volume elevato di record in batch e gestire gli errori temporanei.

Collaboratori

Microsoft gestisce questo articolo. I seguenti collaboratori hanno scritto questo articolo.

Autori principali: