Saat ini saya memiliki dua layanan microser. Kami akan memanggil mereka Adan B.
Database di bawah microservice Amemiliki tabel berikut:
A
|-- users
Database di bawah microservice Bmemiliki tabel berikut:
B
|-- trackers
Persyaratan menyatakan itu usersdan trackersmemiliki 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_trackerstabel ditambahkan ke microserviceA. Tindakan ini mirip dengan tabel gabungan yang berisi "kunci asing" keusersdantrackers. - Sebuah
ownerstabel 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
usersdantrackersdi 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 Blayanan microservice bahwa microservice Aingin 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?