2017-11-24 14 views
0

は、次のことを想像してみて:Microservice通信

  • あなたがチームとプレイヤーそれぞれ独自の、分離データベース(postgresの)との1と呼ばれる2つのmicroservicesを持っています。
  • 私はチームとプレーヤーとの関連付けをする必要があるので、この関係をチームID属性のプレーヤーに保存する必要があります。

私は2つのオプションがあります。

1)カフカを使用して、私はイベントやプレーヤーを送るデータベースに挿入されたすべてのチームのためには、このイベントに耳を傾け、プレイヤーmicroservice内で独自のチームのテーブルを更新します。したがって、プレーヤーのマイクロサービスは、チームとプレーヤーの関係を作るためにチームとプレーヤーのエンティティについての情報を持っています。

ここでは、データの複製と整合性についていくつかの欠点があります。イベントソースとcqrsを使用して回避することができます。

2)マイクロサービスチームに電話をしてチームを表示し、関連付けを行い、プレーヤーのマイクロサービスに投稿します。

欠点:チームサービスがダウンしている可能性があります。

マイクロサービス間で通信して依存関係をアーカイブし、マイクロサービス間の関連性を取る正しいアプローチは何ですか?ステップ1で複製されたデータは合理的ですか?

答えて

1

私はオプション1が好都合であると言います。サービスを分離/独立させておきます。また、他の将来のサービスが同じイベントを購読できるようになります。

私はデータの複製はそれほど問題ではないと思います。私は、個々のサービスがそれぞれ独自のコンテキストで自分のデータを制御する手法を好んでいます(DDD)。サービスは、特定の目的を達成するために必要なだけの簡単な方法で作成できます。

+0

代わりに1つ以上のオプションがありますか?このような関係を築くのがベストですか? – gustavomr

関連する問題