Ich habe derzeit zwei Microservices. Wir werden sie anrufen Aund B.
Die Datenbank unter Microservice Aenthält die folgende Tabelle:
A
|-- users
Die Datenbank unter Microservice Benthält die folgende Tabelle:
B
|-- trackers
Die Anforderungen besagen dies usersund trackershaben 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_trackersMicroservice wird eine Tabelle hinzugefügtA. Dies verhält sich ähnlich wie eine Join-Tabelle, die "Fremdschlüssel" fürusersund enthälttrackers. - Dem
ownersMicroservice 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
usersundtrackersin 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 Bdarum kümmern, dass Microservice Aeine 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?