2010-04-01 10 views
5

Kiedy transakcje rozproszone mają sens w architekturze zorientowanej na usługi?Transakcje SOA i transakcje rozproszone

+1

Ten artykuł wskazuje, że SOA i transakcje rozproszone są wzorcem zapobiegawczym - http://arnon.me/2010/09/soa-antipattern-transactionalintegration/. Na dole znajduje się sekcja "Znane wyjątki", która mówi o "zamkniętych systemach", ale wskazuje, że i tak jest to prawdopodobnie zły pomysł. – Bermo

Odpowiedz

2

Transakcje rozproszone są często używane w środowiskach SOA. Jeśli masz złożoną usługę wywołującą wiele usług, bazowe zgłoszenia serwisowe powinny być traktowane jako pojedyncza transakcja. Procesy biznesowe powinny umożliwiać wycofywanie ich kroków. Jeśli pozwalają na to zasoby bazowe, możesz użyć zatwierdzeń 2-fazowych, ale w wielu przypadkach jest to niemożliwe. W takich przypadkach należy wykonać czynności kompensacyjne dotyczące usług/zasobów wywoływanych przed nieudanym krokiem. Innymi słowy, cofnij powiodły się kroki w odwrotnej kolejności.
Imaginary przykład: telekomunikacyjni przepisy firmowe nowym produktem VoIP dla klienta z 6 zgłoszeń serwisowych: inwentaryzacja

  1. zapytanie do sprawdzenia klient ma odpowiedni sprzęt
  2. sprzętu Konfiguracja klienta poprzez mediację
  3. inwentaryzacji aktualizacja z nowa konfiguracja
  4. skonfigurować silnik ocena liczyć CDR dla klienta
  5. skonfigurować oprogramowanie do fakturowania obciążać klienta z odpowiednim planem cenowym
  6. Aktualizacja systemu CRM z wynikiem procesu rezerwy

Powyższe 6 kroków powinno być częścią jednej transakcji. Na przykład. jeśli aktualizacja inwentarza nie powiedzie się, możesz (możesz) cofnąć konfigurację sprzętu klienta.

1

Nie do końca, kiedy mają sens. Transakcja (rozproszona lub nie) realizowana jest z konieczności, a nie arbitralnego wyboru, aby zagwarantować spójność. Alternatywą jest wdrożenie procesu uzgadniania w celu zapewnienia ostatecznej spójności.

W klasycznym przykładzie bankowym (pieniądze z rachunku A, z uwzględnieniem B), bardzo ważna jest spójność transakcyjna. W niektórych systemach magazynowych (sprawdź stan zapasów, zmniejsz ilość zapasów, sprzedaj klientowi), może być dopuszczalne, aby poziom zapasów był mniej więcej dokładny, a nie gwarantowany. W takim przypadku zignorowanie awarii (likwidacja zapasów, sprzedaż nie zostanie zakończona) może zostać rozwiązane poprzez uzgodnienie później.