現在、2つのマイクロサービスがあります。私たちはそれらA
を呼び出しますB
。
マイクロサービス下のデータベースにA
は次の表があります。
A
|-- users
マイクロサービス下のデータベースにB
は次の表があります。
B
|-- trackers
要件にはそれが明記されusers
てtrackers
おり、多対多の関係があります。
マイクロサービスアーキテクチャ内でこれを適切に処理する方法がわかりません。
これは、次の3つの方法のいずれかで動作することがわかりました。
user_trackers
テーブルには、microserviceに追加されますA
。これは、「外部キー」への参加を含むテーブルに似た働きusers
とtrackers
。owners
テーブルには、microserviceに追加されますB
。このテーブルは、ポリモーフィック結合テーブルと同様に機能します。これにより、どのサービスでもトラッカーとの関連付けを作成できます。これは次のようになります。B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id
- レコードキープ
users
し、trackers
各microserviceでは。ある種のpubsubシステムと同期してください。
もともとオプション2を使用するつもりだったのは、トランザクションの境界が保存されていることが気に入ったからです。トラッカーを作成して、それをアトミックに関連付けることができます。ただし、microserviceの範囲外のようB
です。B
マイクロサービスA
が関連付けを作成することをマイクロサービスが気にする必要があるのはなぜですか?
ここにはおそらく気付いていない良いパターンがあるように感じます。私がレイアウトしたオプションのいずれかが意味をなしますか?より意味のある別のオプションはありますか?