DB Konsistenz mit Microservices

Was ist der beste Weg, um DB-Konsistenz in Mikroservice-basierten Systemen zu erreichen?

Bei derGOTO in Berlin, Martin Fowler sprach über Microservices und eine "Regel", die er erwähnte, war, "Pro-Service" -Datenbanken zu führen, was bedeutet, dass Services keine direkte Verbindung zu einer DB herstellen können, die einem anderen Service "gehört".

Das ist super schön und elegant, aber in der Praxis wird es ein bisschen schwierig. Angenommen, Sie haben ein paar Dienste:

ein Frontendein Auftragsverwaltungsservice ein Treueprogramm-Service

Jetzt tätigt ein Kunde einen Kauf über Ihr Frontend, wodurch der Auftragsverwaltungsservice aufgerufen wird, der alles in der DB speichert - kein Problem. Zu diesem Zeitpunkt wird auch der Treueprogrammdienst angerufen, sodass Punkte von Ihrem Konto gutgeschrieben / abgebucht werden.

Nun, wenn sich alles auf demselben DB / DB-Server befindet, wird alles einfach, da Sie alles in einer Transaktion ausführen können: Wenn der Treueprogrammdienst nicht in die DB schreiben kann, können wir das Ganze zurücksetzen.

Wenn wir DB-Vorgänge über mehrere Services ausführen, ist dies nicht möglich, da wir nicht auf eine Verbindung angewiesen sind und die Ausführung einer einzelnen Transaktion nicht ausnutzen. Was sind die besten Muster, um die Dinge in Einklang zu bringen und ein glückliches Leben zu führen?

Ich bin sehr gespannt auf Ihre Vorschläge! .. und danke im Voraus!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage