Nehmen wir an, wir haben eine Spring Boot-Anwendung, die Microservices-Architektur verwendet. Jeder der Dienste verfügt über eigene Domänenmodelle. Jeder Dienst muss jedoch auf ein Benutzerdomänenobjekt verweisen. Was wäre der beste Ansatz, um dieses Problem zu lösen? Wäre es für jeden Dienst besser, nur eine Benutzer-ID zu haben und dann bei Bedarf den Benutzerservice nach Benutzerdetails zu fragen, oder wäre es besser, eine gemeinsam genutzte Domänenbibliothek für alle Mikrodienste zu haben?
spring
microservices
user1176999
quelle
quelle
Antworten:
Wenn Sie sich für Microservices entschieden haben, um von Skalierbarkeit, loser Kopplung und einfacher, unabhängiger Änderung der einzelnen Services zu profitieren, sollten Sie sich so weit wie möglich daran halten.
Gesamtarchitektur
Ich denke, dass der beste Ansatz wäre:
Zusätzliche Lektüre:
Code-Sharing
Wenn Sie der obigen Lösung zustimmen, verfügen wir über einen Benutzer-Microservice (kapselndes Domain-Modell für Benutzer), und alle anderen Services sind Konsumenten desselben Microservice. Die Frage ist dann, ob Sie wissen wollen:
Ich werde diesbezüglich keine klare Position beziehen, da es Meinungsverschiedenheiten zu diesem Thema des Codetauschs gibt, und ich glaube nicht, dass ich in der Lage bin, eine objektive Position einzunehmen. Hier ist bereits eine zusätzliche Lektüre:
Meine eigene Meinung dazu ist, dass Sie KEINEN Code zwischen dem Benutzer-Anbieter und den Benutzer-Verbrauchern teilen sollten, um eine enge Kopplung zu vermeiden. Sie KÖNNTEN jedoch den Benutzerverbrauchscode unter den Verbrauchern aufteilen, wenn Sie über ein starkes Versionsmanagement verfügen. Dieser Ansatz hätte einige Vorteile:
quelle
Ich würde eine gemeinsame Bibliothek vermeiden, wenn es überhaupt möglich ist. Fragen Sie sich, welche Eigenschaften eines Benutzers jeder Dienst benötigt? Häufig gibt es eine Kerndomäne, in der der Großteil des Verhaltens um einen Benutzer herum vorhanden ist, wobei für unterstützende Domänen häufig nur eine Benutzer-ID erforderlich ist.
Wenn Ihr Dienst weitere Details zu einem Benutzer benötigt, sehen Sie sich hier einige Vorschläge an , wie Sie mit solchen Situationen umgehen können
quelle