Al momento ho due microservizi. Li chiameremo Ae B.
Il database in microservice Aha la seguente tabella:
A
|-- users
Il database in microservice Bha la seguente tabella:
B
|-- trackers
I requisiti lo affermano userse trackershanno una relazione molti-a-molti.
Non sono sicuro di come gestirlo correttamente all'interno di un'architettura di microservizi.
Ho potuto vedere questo lavoro in tre modi:
- Una
user_trackerstabella viene aggiunta a microservizioA. Funziona in modo simile a una tabella di join contenente "chiavi esterne" ausersetrackers. - Una
ownerstabella viene aggiunta a microservizioB. Questa tabella si comporta in modo simile a una tabella di join polimorfica. Ciò consentirebbe a qualsiasi servizio di creare un'associazione con un tracker. Questo potrebbe apparire un po 'così:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id - Conservare i record per
usersetrackersin ciascun microservizio. Tienili sincronizzati con una sorta di sistema pubsub.
Inizialmente avrei optato per l'opzione 2 perché mi piaceva che preservasse i confini delle transazioni. Posso creare un tracker e associarlo atomicamente a qualcosa. Tuttavia, sembra fuori dal campo di applicazione del microservizio B. Perché il microservizio dovrebbe Bpreoccuparsi che il microservizio Avoglia creare un'associazione?
Sento che probabilmente c'è un buon modello qui di cui non sono a conoscenza. Alcune delle opzioni che ho presentato hanno un senso? C'è un'altra opzione che potrebbe avere più senso?