Implementowanie wzorca transakcyjnej skrzynki nadawczej za pomocą usługi Dataverse

Rozwiązania dla przedsiębiorstw muszą niezawodnie dostarczać komunikaty w przypadku wystąpienia zmian danych w usłudze Dataverse. Ta architektura referencyjna pokazuje, jak zaimplementować wzorzec Transactional Outbox z usługą Dataverse, aby zmniejszyć ryzyko utraty komunikatów i pomóc w synchronizowaniu zintegrowanych systemów.

Wskazówka

Ten artykuł zawiera przykładowy scenariusz i uogólnioną architekturę przykładową, aby zilustrować sposób implementowania niezawodnego dostarczania zdarzeń z usługi Dataverse. Przykładowa architektura może być modyfikowana dla wielu różnych scenariuszy i branż.

Wykres architektury

Diagram architektury pokazujący, jak usługa Dataverse implementuje wzorzec Transactional Outbox, przechowując rekordy skrzynki odbiorczej w tej samej transakcji, co zmiany danych biznesowych i publikowanie komunikatów do Azure Service Bus do dalszego przetwarzania.

Workflow

W poniższych krokach opisano przepływ pracy pokazany na przykładowym diagramie architektury:

  1. Wykonywana jest operacja na danych w usłudze Dataverse, taka jak tworzenie lub aktualizowanie rekordu Kontakt. Ta operacja tworzy transakcję bazy danych.
  2. Synchroniczna wtyczka usługi Dataverse jest wyzwalana w odpowiedzi na to zdarzenie i tworzy rekord w tabeli skrzynki nadawczej w usłudze Dataverse w ramach tej samej transakcji.
  3. Jeśli wtyczka zostanie wykonana pomyślnie, transakcja zatwierdzi zarówno zmiany w rekordzie skrzynki nadawczej, jak i w oryginalnym rekordzie (na przykład Kontakt).
  4. Jeśli wykonanie wtyczki zakończy się niepowodzeniem, oryginalne zdarzenie danych zostanie wycofane, a usługa Dataverse nie zatwierdzi żadnych modyfikacji rekordów.
  5. Asynchroniczna wtyczka jest wyzwalana w odpowiedzi na utworzenie rekordu w tabeli skrzynki nadawczej w usłudze Dataverse i zapisuje komunikat w kolejce lub temacie Azure Service Bus.
  6. Odbiorca komunikatu nasłuchuje komunikatów do przetwarzania i przekazywania do systemu docelowego.

Components

Dataverse to źródłowy system transakcyjny będący systemem rejestrowym, w którym występuje zdarzenie danych, a tabela skrzynki nadawczej istnieje. Asynchronicznie wysyła komunikaty do brokera komunikatów przy użyciu wtyczki.

Azure Service Bus jest niezawodnym brokerem przedsiębiorstwa, który odbiera komunikaty z usługi Dataverse do przetwarzania przez systemy odbierające.

  • Kolejki są idealne, gdy istnieje jeden odbiornik komunikatu.
  • Topiki są najlepsze, gdy wielu subskrybentów może przetworzyć ten sam komunikat lub użyć kryteriów filtrowania w celu selektywnego przetwarzania komunikatów.

Azure Monitor to kompleksowe rozwiązanie do zbierania, analizowania i reagowania na dane monitorowania z rozwiązań chmurowych i lokalnych. Użyj wbudowanych metryk dla Azure Service Bus, aby monitorować liczbę komunikatów w kolejce lub temacie albo w kolejce utraconych komunikatów.

aplikacja systemu Azure Insights służy do monitorowania wydajności aplikacji i można włączyć dla wtyczek usługi Dataverse wysyłanie dzienników śledzenia do obszaru roboczego usługi Application Insights.

Opcje alternatywne:

  • Azure Logic Apps: realna alternatywa low-code do dostarczania komunikatów z tabeli skrzynki nadawczej do brokera komunikatów, jeśli chcesz mieć bardziej precyzyjną kontrolę nad tym, kiedy wyzwalać orkiestrację i dostarczanie komunikatu (na przykład micro-batching).
  • Azure Functions: alternatywa oparta na podejściu code-first, która zapewnia największą elastyczność i skalę w celu obsługi większych woluminów i ponownych prób po przejściowych awariach.

Szczegóły scenariusza

Rozwiązania dla przedsiębiorstw często muszą wymieniać krytyczne dane z innymi systemami za pośrednictwem komunikatów. Aby zapewnić spójność w różnych systemach, należy obsługiwać operację na danych i dostarczanie komunikatów jako pojedynczą niepodzielną operację. Jednak większość systemów transakcyjnych i brokerów komunikatów rzadko obsługuje transakcje rozproszone lub wprowadza ścisłe sprzężenia, których chcesz uniknąć. Bez transakcji rozproszonej nie ma gwarancji niezawodności, ponieważ może wystąpić błąd podczas wysyłania komunikatu do brokera po zatwierdzeniu transakcji.

Wzorzec Transactional Outbox rozwiązuje to wyzwanie, tworząc komunikat w tej samej lokalnej transakcji bazy danych, w ramach której aktualizowane są dane biznesowe. Następnie oddzielny proces może dostarczyć komunikat z tabeli skrzynki nadawczej do brokera komunikatów. Sporadyczne awarie procesów nie są problemem. Tabela skrzynki nadawczej przechowuje komunikat, więc nie zostanie utracony, a proces ponawia próbę, dopóki nie zakończy się pomyślnie.

Usługa Dataverse to zaawansowana i rozszerzalna platforma danych typu low-code z magazynem danych transakcyjnych, która może implementować ten wzorzec dla krytycznych scenariuszy integracji wychodzącej.

Considerations

Te założenia stanowią odzwierciedlenie filarów Power Platform Well-Architected, czyli zbioru zasad przewodnich, które poprawiają jakość obciążenia roboczego. Dowiedz się więcej w Microsoft Power Platform Well-Architected.

Reliability

Ten wzorzec znacznie zwiększa niezawodność, gwarantuje co najmniej jednokrotne dostarczanie i spójność ostateczną, zapewniając spójność transakcyjną. Korzystając z brokera komunikatów, chroni systemy docelowe przed przeciążeniem poprzez kontrolowanie przepływu danych między systemami źródłowymi i docelowymi oraz zabezpieczenie przed problemami z dostępnością systemów docelowych.

Jeśli kolejność komunikatów jest wymagana, włącz sesje Azure Service Bus w kolejce lub subskrypcji. Producent powinien przypisać spójny identyfikator SessionId, taki jak rekord Dataverse lub identyfikator agregacji, do powiązanych komunikatów, aby były przetwarzane w kolejności w ramach tej sesji. Projektuj odbiorców na potrzeby przetwarzania idempotentnego, ponieważ ten wzorzec zapewnia dostarczenie co najmniej raz, a zduplikowane komunikaty mogą wystąpić. W przypadku, gdy wykrywanie brakujących zdarzeń lub zdarzeń poza kolejnością jest ważne, komunikaty mogą zawierać numer sekwencji na poziomie aplikacji. Gwarancje kolejności mają zastosowanie w ramach sesji, a nie globalnie, a rozwiązanie powinno zdefiniować sposób, w jaki ponawianie prób i wiadomości przeniesione do dead-letter queue wpływają na kolejne przetwarzanie w ramach tej sesji.

Zabezpieczenia

Za pomocą usług Azure usługa Dataverse może uwierzytelniać się w brokerze komunikatów (Azure Service Bus) za pomocą tożsamości zarządzanych Azure za pośrednictwem funkcji tożsamości zarządzanej platformy Power Platform. Takie podejście eliminuje ryzyko przechowywania poufnych poświadczeń i przestojów spowodowanych rotacją sekretów.

Wydajność operacyjna

Korzystanie z brokera komunikatów, takiego jak Azure Service Bus, pomaga wyrównywać obciążenie, aby zapewnić, że aplikacje podrzędne nie stają się przeciążone w okresach dużych ilości.

Rozważ użycie funkcji Azure zamiast asynchronicznej wtyczki Dataverse w celu wysyłania komunikatów do Azure Service Bus, jeśli woluminy staną się bardzo wysokie. Takie podejście zapewnia największą skalę i elastyczność przetwarzania dużej liczby rekordów w partii i obsługi błędów przejściowych.

Contributors

Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.

Główni autorzy: