現在、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が関連付けを作成することをマイクロサービスが気にする必要があるのはなぜですか?
ここにはおそらく気付いていない良いパターンがあるように感じます。私がレイアウトしたオプションのいずれかが意味をなしますか?より意味のある別のオプションはありますか?