Ich habe derzeit zwei Microservices. Wir werden sie anrufen A
und B
.
Die Datenbank unter Microservice A
enthält die folgende Tabelle:
A
|-- users
Die Datenbank unter Microservice B
enthält die folgende Tabelle:
B
|-- trackers
Die Anforderungen besagen dies users
und trackers
haben eine Viele-zu-Viele-Beziehung.
Ich bin mir nicht sicher, wie ich das in einer Microservices-Architektur richtig handhaben soll.
Ich konnte sehen, dass dies auf drei Arten funktioniert:
- Dem
user_trackers
Microservice wird eine Tabelle hinzugefügtA
. Dies verhält sich ähnlich wie eine Join-Tabelle, die "Fremdschlüssel" fürusers
und enthälttrackers
. - Dem
owners
Microservice wird eine Tabelle hinzugefügtB
. Diese Tabelle verhält sich ähnlich wie eine polymorphe Verknüpfungstabelle. Dies würde es jedem Dienst ermöglichen, eine Zuordnung zu einem Tracker herzustellen. Dies könnte ungefähr so aussehen:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id
- Führen Sie Aufzeichnungen für
users
undtrackers
in jedem Microservice. Halten Sie sie mit einer Art Pubsub-System synchron.
Ich wollte ursprünglich Option 2 wählen, weil mir gefallen hat, dass die Transaktionsgrenzen erhalten bleiben. Ich kann einen Tracker erstellen und ihn atomar mit etwas verknüpfen. Es scheint jedoch nicht für den Mikroservice geeignet zu sein B
. Warum sollte sich Microservice B
darum kümmern, dass Microservice A
eine Assoziation erstellen möchte?
Ich habe das Gefühl, dass es hier wahrscheinlich ein gutes Muster gibt, das mir nicht bekannt ist. Ist eine der von mir festgelegten Optionen sinnvoll? Gibt es eine andere Option, die sinnvoller sein könnte?