Şu anda iki mikro hizmetim var. Onları arayacağız A
ve B
.
Mikro hizmet altındaki veritabanı A
aşağıdaki tabloya sahiptir:
A
|-- users
Mikro hizmet altındaki veritabanı B
aşağıdaki tabloya sahiptir:
B
|-- trackers
Gereksinimler bunu belirtir users
ve trackers
çoktan çoğa bir ilişkiye sahiptir.
Bunu bir mikro hizmet mimarisi içinde nasıl düzgün bir şekilde ele alacağımdan emin değilim.
Bunun üç şekilde çalıştığını görebiliyordum:
user_trackers
Mikro hizmete bir tablo eklenirA
. Bu,users
ve öğelerine "yabancı anahtarlar" içeren bir birleştirme tablosuna benzer şekilde davranırtrackers
.owners
Mikro hizmete bir tablo eklenirB
. Bu tablo, polimorfik birleştirme tablosuna benzer şekilde hareket eder. Bu, herhangi bir hizmetin bir izleyici ile ilişkilendirme yapmasına izin verir. Bu şöyle görünebilir:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id
- Her mikro hizmet için
users
vetrackers
her bir mikro servis için kayıt tutun . Bir çeşit pubsub sistemi ile senkronize halde tutun.
Başlangıçta seçenek 2 ile gidecektim çünkü işlem sınırlarını korumayı sevdim. Bir izleyici oluşturabilir ve atomik bir şeyle ilişkilendirebilirim. Ancak, mikro hizmet kapsamı dışında görünüyor B
. Mikro B
hizmet neden mikro hizmetin A
bir ilişki oluşturmak istediğine dikkat etmelidir ?
Burada farkında olmadığım muhtemelen iyi bir model olduğunu hissediyorum. Ortaya koyduğum seçeneklerden herhangi biri anlamlı mı? Daha anlamlı olabilecek başka bir seçenek var mı?