Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Virksomhetsløsninger må levere meldinger på en pålitelig måte når dataendringer skjer i Dataverse. Denne referansearkitekturen viser hvordan du implementerer Transactional Outbox-mønsteret med Dataverse for å redusere risikoen for tap av meldinger og bidra til å holde integrerte systemer synkronisert.
Tips
Denne artikkelen inneholder et eksempelscenario og en generalisert eksempelarkitektur for å illustrere hvordan du implementerer pålitelig hendelseslevering fra Dataverse. Arkitektureksemplet kan endres for mange forskjellige scenarier og bransjer.
Arkitekturdiagram
Workflow
Fremgangsmåten nedenfor beskriver arbeidsflyten som vises i eksempelarkitekturdiagrammet:
- En dataoperasjon i Dataverse forekommer, for eksempel oppretting eller oppdatering av en kontaktoppføring. Denne operasjonen oppretter en databasetransaksjon.
- En synkron Dataverse-plugin-modul utløses som svar på denne hendelsen og oppretter en post i en utbokstabell i Dataverse som en del av den samme transaksjonen.
- Hvis plugin-modulen kjøres vellykket, bekrefter transaksjonen både endringene i utboksposten og i den opprinnelige posten (for eksempel Kontakt).
- Hvis utføringen av plugin-modulen mislykkes, ruller den opprinnelige datahendelsen tilbake, og Dataverse lagrer ingen endringer i poster.
- En asynkron plugin-modul utløses som svar på opprettelsen av en post i utbokstabellen i Dataverse, og skriver en melding til en Azure Service Bus-kø eller et emne.
- En meldingsforbruker lytter etter meldinger som skal behandles, og sender dem til et målsystem.
Komponenter
Dataverse er kildetransaksjonssystemet der registreringen føres, der datahendelsen forekommer og utbokstabellen finnes. Det sender asynkront meldinger til meldingsmegleren ved hjelp av en plugin-modul.
Azure Service Bus er den pålitelige meldingsformidleren for virksomheter som mottar meldinger fra Dataverse for behandling av mottakende systemer.
- Køer er ideelle når det er én enkelt mottaker av en melding.
- Emner er best når mange abonnenter kan behandle den samme meldingen eller trenger filterkriterier for å selektivt behandle meldinger.
Azure Monitor er en omfattende overvåkingsløsning for innsamling, analyse og å reagere på overvåkingsdata fra sky- og lokale løsninger. Bruk innebygde måleverdier for Azure Service Bus til å overvåke antall meldinger i en kø eller et emne eller en kø for meldinger som ikke ble levert.
Azure Application Insights brukes til overvåking av programytelse og kan aktiveres for Dataverse plugin-moduler for å sende sporingslogger til et Application Insights workspace.
Andre alternativer:
- Azure Logic Apps: Et levedyktig lavkodealternativ for å levere meldinger fra utbokstabellen til meldingsmegleren hvis du vil ha mer nøyaktig kontroll over når iverksettingen og leveringen av meldingen skal utløses (f.eks. mikrogruppering).
- Azure Functions: Et kode-første-alternativ som gir deg mest fleksibilitet og skalering til å håndtere høyere volumer og nye forsøk ved periodiske feil.
Scenariodetaljer
Virksomhetsløsninger må ofte utveksle kritiske data med andre systemer via meldinger. For å sikre konsekvens på tvers av systemer håndterer du dataoperasjonen og meldingsleveringen som én enkelt atomoperasjon. Imidlertid støtter de fleste transaksjonssystemer og meldingsmeglere sjelden distribuerte transaksjoner, eller de introduserer tett kobling som du vil unngå. Uten en distribuert transaksjon er det ingen pålitelighetsgaranti fordi en feil kan oppstå når du sender meldingen til megleren etter at en transaksjon er bekreftet.
Det transaksjonelle utboksmønsteret løser denne utfordringen ved å opprette en melding i den samme lokale databasetransaksjonen som oppdaterer forretningsdataene. En egen prosess kan deretter levere meldingen fra utbokstabellen til meldingsmegleren. Uregelmessige prosessfeil er ikke et problem. Utbokstabellen lagrer meldingen slik at den ikke går tapt, og prosessen prøver på nytt til den lykkes.
Dataverse er en kapabel og utvidbar dataplattform med lav kode med transaksjonsdatalagring som kan implementere dette mønsteret for kritiske utgående integreringsscenarioer.
Vurderinger
Disse hensynene tar i bruk prinsippene i Power Platform Well-Architected, et sett med veiledende prinsipper som forbedrer kvaliteten på en arbeidsbelastning. Finn ut mer i Microsoft Power Platform Well-Architected.
Pålitelighet
Dette mønsteret øker påliteligheten betydelig, garanterer levering minst én gang og eventual konsekvens ved å sikre transaksjonskonsekvens. Ved å bruke en meldingsmegler beskyttes nedstrømssystemer mot å bli overbelastet ved å kontrollere dataflyten mellom kilde- og målsystemer, og det beskytter mot tilgjengelighetsproblemer i nedstrømssystemer.
Når det kreves rekkefølge på meldinger, aktiverer du Azure Service Bus-økter i køen eller abonnementet. Produsenten bør tildele en konsekvent SessionId, for eksempel Dataverse-oppføringen eller aggregat-ID-en, til relaterte meldinger slik at de behandles i rekkefølge i denne økten. Utform forbrukere for idempotent behandling, da dette mønsteret gir at-least-once-levering og dupliserte meldinger kan oppstå. Der det er viktig å oppdage manglende eller hendelser i feil rekkefølge, kan meldinger inneholde et sekvensnummer på programnivå. Rekkefølgegarantier gjelder innenfor en økt i stedet for globalt, og løsningen bør definere hvordan nye forsøk og dead-letter-meldinger påvirker etterfølgende behandling for denne økten.
Security
Ved hjelp av Azure-tjenester kan Dataverse autentisere seg mot meldingsmegleren (Azure Service Bus) gjennom Azure-administrerte identiteter via den administrerte identitetsfunksjonen for Power Platform. Denne tilnærmingen eliminerer risikoen ved å lagre sensitiv påloggingsinformasjon og nedetid forårsaket ved rotering av hemmeligheter.
Ytelseseffektivitet
Bruk av en meldingsmegler som Azure Service Bus bidrar til å jevne ut belastningen for å sikre at nedstrømsprogrammer ikke blir overveldet i perioder med høyt volum.
Vurder å bruke en Azure-funksjon over en asynkron datavers plugin-modul for å sende meldinger til Azure Service Bus hvis volumene blir svært høye. Denne fremgangsmåten gir mest skala og fleksibilitet til å behandle et stort antall poster i batch og håndtere midlertidige feil.
Bidragsytere
Microsoft vedlikeholder denne artikkelen. Følgende bidragsytere skrev denne artikkelen.
Hovedforfattere:
- Chris Piasecki, løsningsarkitekt