Synchronizacja danych jak serwis nie działa

0

Cześć
jest taki oto scenariusz
mam dwa serwisy
CUSTOMER i ORDERS
w ORDERS trzymam kopię klientów gdyż ORDERS subskrybuje zdarzenie DODANIE KLIENTA i jak się doda klient - to kopia jego danych (UNIQUE ID) jest także przechowywana jako zasób serwisu ORDERS
Ale serwis ORDERS padł, trzeba go zmienić - cokolwiek
w międzyczasie dodano klienta - no ale kopia nie została zapisana w ORDERS bo seriws z tych czy innych przyczyn był nieaktywny

No i jak teraz zsynchronizować dane?
jak to się robi poprawnie?
czego szukać?

jak to się robi gdy np serwis jest uaktualniony i startuje na nowo, a jak w przypadku gdy np kłopoty z siecią ale serwis działa?

z góry dziękuję za pomoc

0

ja bym zrobil serwis pomiedzy ktory synchronizuje jeden serwis z drugim i jak trzeba to drugi z pierwszym

W tym serwisie ustalasz o ktorej godzinie ma wystartowac synchronizacje, informujesz klienta ze o tej porze aplikacja nie bedzie dostepna (bo co, jezeli przy synchronizacji ktos doda dane?) i normalnie odpalasz synchronizacje

Mozesz zrobic to automatycznie, np przy startupie jednego z serwisow tworzysz automatycznie Joba o danej godzinie

0

Zmiany w CUSTOMER zapisywałbym dodatkowo do kolejki. Serwis ORDERS odpytywałby (okresowo i/lub w reakcji na event) o dane z tej kolejki i odpowiednio aktualizował swoje zasoby.

0

Jeśli serwis A potrzebuje danych Serwisu B i trzyma je w cachu (ja bym się zastanowił czy to są dobre kandydatury na dwa serwisu, czy jeden... ale może w danym wypadku i są) to update cache można realizować na kilka sposobów, ale najlepiej przez messaging.
Dobre rozwiązanie po prostu wyśle wiadomość że w B coś się zmieniło i będzie czekać aż A zaakceptuje ją i przetworzy. Większość kolejek tak działa. Innymi słowy kluczem jest komunikacja asynchroniczna.

Swoją drogą całkiem świeża prezentacja na dokładnie ten temat:
https://skillsmatter.com/skillscasts/13645-event-driven-colloboration

Mnie tam brakuje jednak więcej informacji o sagach ale to idealne przykłady realizacji choreografii dla mikroserwisów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1