Saat ini saya memiliki dua layanan microser. Kami akan memanggil mereka A
dan B
.
Database di bawah microservice A
memiliki tabel berikut:
A
|-- users
Database di bawah microservice B
memiliki tabel berikut:
B
|-- trackers
Persyaratan menyatakan itu users
dan trackers
memiliki hubungan banyak-ke-banyak.
Saya tidak yakin bagaimana menangani dengan benar ini dalam arsitektur layanan microser.
Saya bisa melihat ini bekerja dengan satu dari tiga cara:
- Sebuah
user_trackers
tabel ditambahkan ke microserviceA
. Tindakan ini mirip dengan tabel gabungan yang berisi "kunci asing" keusers
dantrackers
. - Sebuah
owners
tabel ditambahkan ke microserviceB
. Tabel ini bertindak mirip dengan tabel gabungan polimorfik. Ini akan memungkinkan layanan apa pun untuk membuat asosiasi dengan pelacak. Ini mungkin terlihat seperti ini:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id
- Menyimpan catatan untuk
users
dantrackers
di setiap layanan microser. Tetap sinkronkan dengan semacam sistem pubsub.
Saya awalnya akan pergi dengan opsi 2 karena saya suka itu mempertahankan batas transaksi. Saya dapat membuat pelacak dan mengaitkannya dengan sesuatu secara atom. Namun, tampaknya di luar ruang lingkup untuk layanan Microsoft B
. Mengapa harus B
layanan microservice bahwa microservice A
ingin membuat asosiasi?
Saya merasa mungkin ada pola yang baik di sini yang tidak saya sadari. Apakah ada opsi yang saya paparkan masuk akal? Apakah ada opsi lain yang lebih masuk akal?