Implementere mønsteret for den transaktionsmæssige udbakke med Dataverse

Virksomhedsløsninger skal levere meddelelser pålideligt, når dataændringer sker i Dataverse. Denne referencearkitektur viser, hvordan du implementerer Transactional Outbox-mønstret med Dataverse for at reducere risikoen for tab af meddelelser og holde integrerede systemer synkroniseret.

Tip

Denne artikel indeholder et eksempelscenarie og en generel eksempelarkitektur, der illustrerer, hvordan du implementerer pålidelig levering af hændelser fra Dataverse. Arkitektureksemplet kan ændres til mange forskellige scenarier og brancher.

Arkitekturdiagram

Arkitekturdiagram, der viser, hvordan Dataverse implementerer Transactional Outbox-mønsteret ved at gemme udbakkeposter i den samme transaktion som forretningsdataændringer og publicere meddelelser til Azure Service Bus til downstreambehandling.

Workflow

I følgende trin beskrives den arbejdsproces, der vises i eksemplet på arkitekturdiagrammet:

  1. Der udføres en datahandling i Dataverse, f.eks. oprettelse eller opdatering af en kontaktpost. Denne handling opretter en databasetransaktion.
  2. Et synkront Dataverse-plug-in udløses som svar på denne hændelse og opretter en post i en outbox-tabel i Dataverse som en del af den samme transaktion.
  3. Hvis plug-in'en udføres korrekt, committer transaktionen ændringerne i både udbakkeposten og den oprindelige post (f.eks. Kontakt).
  4. Hvis udførelsen af plug-in'en mislykkes, annulleres den oprindelige datahændelse, og Dataverse gennemfører ingen postændringer.
  5. Et asynkront plug-in udløses som svar på oprettelsen af en post i outbox-tabellen i Dataverse og skriver en meddelelse til en Azure Service Bus-kø eller et emne.
  6. En beskedforbruger lytter efter beskeder for at behandle dem og sende dem videre til et destinationssystem.

Komponenter

Dataverse er kildetransaktions- og registreringssystemet, hvor datahændelsen forekommer, og outbox-tabellen findes. Der sendes asynkront meddelelser til meddelelsesmægleren ved hjælp af et plug-in.

Azure Service Bus er den pålidelige virksomhedsmægler, der modtager meddelelser fra Dataverse til behandling i modtagende systemer.

  • Køer er ideelle, når der er en enkelt modtager af en meddelelse.
  • Emner er bedst, når mange abonnenter kan behandle den samme meddelelse eller har brug for filterkriterier til selektiv behandling af meddelelser.

Azure Monitor er en omfattende overvågningsløsning til indsamling, analyse og svar på overvågningsdata fra cloudløsninger og løsninger i det lokale miljø. Brug indbyggede målinger til Azure Service Bus til at overvåge antallet af meddelelser i en kø eller et emne eller en død-brev-kø.

Azure Application Insights bruges til overvågning af programydeevnen og kan aktiveres for Dataverse-plug-ins til at sende sporingslogge til et Application Insights-arbejdsområde.

Alternative muligheder:

  • Azure Logic Apps: Et levedygtigt low-code-alternativ til at levere meddelelser fra outbox-tabellen til meddelelsesmægleren, hvis du vil have mere præcis kontrol over, hvornår du skal udløse orkestreringen og leveringen af meddelelsen (f.eks. som mikrobatch).
  • Azure Functions: Et kodebaseret alternativ, der giver dig den største fleksibilitet og skalering til at håndtere højere mængder og genforsøg ved midlertidige fejl.

Detaljer om scenariet

Virksomhedsløsninger skal ofte udveksle vigtige data med andre systemer via meddelelser. For at sikre ensartethed på tværs af systemer skal du håndtere dataoperationen og meddelelsesleveringen som en enkelt atomisk operation. Men de fleste transaktionssystemer og meddelelsesmæglere understøtter sjældent distribuerede transaktioner, eller de introducerer tæt kobling, som du vil undgå. Uden en distribueret transaktion er der ingen pålidelighedsgaranti, fordi der kan opstå en fejl, når meddelelsen sendes til brokeren, efter at en transaktion er committet.

Mønsteret for den transaktionsmæssige udbakke løser denne udfordring ved at oprette en meddelelse i den samme lokale databasetransaktion, der opdaterer forretningsdataene. En separat proces kan derefter levere meddelelsen fra udbakketabellen til meddelelsesmægleren. Intermitterende procesfejl er ikke et problem. I outbox-tabellen gemmes meddelelsen, så den ikke går tabt, og processen prøver igen, indtil den lykkes.

Dataverse er en kraftfuld og fleksibel dataplatform med lav kode med transaktionsdatalager, der kan implementere dette mønster for kritiske udgående integrationsscenarier.

Overvejelser

Disse overvejelser implementerer søjlerne i Power Platform Well-Architected, et sæt vejledende principper, der forbedrer kvaliteten af en arbejdsbyrde. Få mere at vide i Microsoft Power Platform Well-Architected.

Pålidelighed

Dette mønster øger pålideligheden betydeligt, garanterer mindst én gangs levering og eventuel konsistens ved at sikre transaktionskonsistens. Ved at bruge en meddelelsesmægler beskytter den downstream-systemer mod at blive overvældet ved at styre strømmen af data mellem kilde- og målsystemer og beskytte mod tilgængelighedsproblemer i downstream-systemer.

Når der kræves meddelelsesrækkefølge, skal du aktivere Azure Service Bus-sessioner i køen eller abonnementet. Producenten skal tildele et ensartet SessionId, f.eks. Dataverse-posten eller aggregat-id'et, til relaterede meddelelser, så de behandles i rækkefølge i den pågældende session. Design forbrugere til at håndtere idempotent behandling, da dette mønster giver mindst én gangs levering, og duplikerede beskeder kan forekomme. Hvor det er vigtigt at registrere manglende eller ude af sekvenshændelser, kan meddelelser indeholde et sekvensnummer på programniveau. Rækkefølgegarantier gælder i en session i stedet for globalt, og løsningen skal definere, hvordan nye forsøg og dead-letter-meddelelser påvirker den efterfølgende behandling af sessionen.

Security

Ved hjælp af Azure-tjenester kan Dataverse autentificere over for meddelelsesmægleren (Azure Service Bus) via Azure-administrerede identiteter via funktionen administreret identitet i Power Platform. Denne fremgangsmåde fjerner risikoen ved at gemme følsomme legitimationsoplysninger og nedetid, der skyldes rotation af hemmeligheder.

Ydeevneeffektivitet

Brug af en meddelelsesmægler, f.eks. Azure Service Bus hjælper med at udjævne belastningen for at sikre, at downstream-programmer ikke bliver overvældet i perioder med høj volumen.

Overvej at bruge en Azure-funktion frem for en asynkron Dataverse-plug-in til at sende meddelelser til Azure Service Bus, hvis mængden bliver meget stor. Denne fremgangsmåde giver den største skalering og fleksibilitet til at behandle en stor mængde poster i batch og håndtere midlertidige fejl.

Bidragydere

Microsoft vedligeholder denne artikel. Følgende bidragydere skrev denne artikel.

Hovedforfattere: