Sobes.tech
Middle+

Czym jest saga w kontekście zarządzania transakcjami?

sobes.tech AI

Odpowiedź od AI

Saga to wzorzec zarządzania rozproszonymi transakcjami w architekturze mikroserwisów. Reprezentuje sekwencję lokalnych transakcji, z których każda aktualizuje dane w ramach jednego serwisu.

Jeśli któraś lokalna transakcja w sekwencji zakończy się niepowodzeniem, saga wykonuje zestaw transakcji kompensacyjnych, aby cofnąć zmiany dokonane przez wcześniej pomyślnie zakończone lokalne transakcje, przywracając integralność systemu.

Dwa główne podejścia do implementacji sag:

  1. Choreografia: Serwisy wymieniają się zdarzeniami bezpośrednio, nie polegając na centralnym koordynatorze. Każdy serwis słucha zdarzeń generowanych przez inne serwisy i wykonuje swoje lokalne transakcje i/lub publikuje nowe zdarzenia w odpowiedzi.

    • Zalety: Prostsze w implementacji dla małej liczby serwisów, brak pojedynczego punktu awarii.
    • Wady: Trudne do śledzenia przepływu i potencjalnych cyklicznych zależności, trudniejsze do debugowania.
  2. Orkiestracja: Centralny orchestrator (orchestrator sag) zarządza sekwencją wykonywania lokalnych transakcji. Orchestrator wysyła polecenia serwisom, aby wykonały swoje lokalne transakcje, i reaguje na zdarzenia zwracane przez serwisy (sukces/porażka), podejmując decyzje o kolejnym kroku lub uruchomieniu transakcji kompensacyjnych.

    • Zalety: Jasność odpowiedzialności, łatwiejsze śledzenie i debugowanie przepływu, łatwiejsza implementacja złożonych logik.
    • Wady: Orchestrator może być pojedynczym punktem awarii, wymaga dodatkowej logiki do zarządzania stanem sag.

Wybór implementacji zależy od złożoności procesu biznesowego, liczby zaangażowanych serwisów i wymagań dotyczących zarządzania i obserwowalności. Saga nie zapewnia atomowości w klasycznym rozumieniu (ACID), ale gwarantuje eventual consistency.