2017-02-25 8 views
0

私はマイクロサービスを扱い、いくつかの質問に遭遇しました(サービス間の関係に関して)、私は良い答え/ベストプラクティスを見つけるのは難しいです。もしあなたがこれをどう扱うかをヒントや助言を与えることができれば、本当に素晴らしいことでしょう。マイクロサービスは、他の人に何かをさせることに依存しています

これらの質問は、特定のプロジェクトに向けていないので、私は次の例で可能な限り明確にしてみてください。

そのログ、あなたがYouTubeチャンネルオブザーバのいくつかの種類を構築したいと仮定しましょう特定の時間間隔でインポートされる異なる種類のチャネル(メタ)データ(ビデオ、時間ビュー/サブカウント、現在サブスクライブされている)

  • の追加/注目するチャンネル(=>マネージャサービス)
  • インポート情報を(削除=>:

    は、したがって、各アプリはmicroserviceを形成すべき、提供している二つの主要な機能がありますインポートサービス)

両方のサービスは、相互に通信するためのAPIを提供します。

マネージャーサービスは、基本情報(名前、連絡先、...)、およびこれらの観測されたチャネルが現在加入しているチャネルで監視する必要があるチャネルを含むデータベースに接続され、インポートサービス他のすべての時系列指向情報(ビデオ、時間別ビュー/サブカウント)を含むデータベースを持っています。

チャンネルを追加するには、チャンネルURLのみを指定する必要があります。他のすべての情報(名前、連絡先、...)はインポートサービスによって追加されます(ただし、ユーザーが変更することもできます)。

すべてのインポートサービスはマネージャーサービスの情報なしで全く役に立たず、マネージャーサービスはインポートサービスが利用できない場合にユーザー指定のチャンネル情報(最悪の場合:チャンネルURLのみ)を表示することができます。合計では、彼らはお互いに大きく依存しています。

一般的なアーキテクチャではそれほど多くありません。

私がここに持っている問題は、インポートサービスは、このような偉大な程度に管理サービス・データベース内のデータに依存し、またそれを修正することを、次のとおりです。

  1. マネージャーを共有するために良いでしょうこれら2つのサービスの間でサービスデータベースを使用するか、または提供されたAPIによってのみアクセス可能にする必要がありますか?
  2. データベースが共有されているかどうかにかかわらず、どちらのサービスでもチャネルのモデルクラスが必要です。それらを共有するのは大丈夫ですか?
  3. 基本的なチャネル情報を必要とする他のサービスもあると仮定すると、このアーキテクチャはまったく良いアイデアですか?
+0

私はそれぞれのサービスがそれ自身のデータベースとキャッシュを持つべきであると思っています。これはサービスがどのように独立するかということです。必要に応じて、データにアクセスするためのサービスコール。 –

+0

@MAshrafulAあなたのお返事ありがとうございます! APIに固執して、マネージャーサービスが利用できない場合は、インポートサービスは何もできないことをお勧めします。 – Tek

+0

はい、複数のインスタンスが適切な「サービス検出」で実行されている場合、要求を別のインスタンスサービスに転送できます –

答えて

1

2つのマイクロサービスが緊密に結合されている場合、それらをマージすることを強くお勧めします。あなたはなぜマイクロサービスを持ちたいのですか?それはおそらく独立したチームで作業している、大規模に成長すべき大きなプロジェクトですか? マイクロサービスは、クールだが必要性のために行ってはいけません。比較的小さな1人のプロジェクトでは、私は一般的にマイクロサービスの使用を提案しませんでした。

私はマイクロサービスでいくつかの読書をします。マイクロサービスアーキテクチャを使用する時期と分割する場所について

関連する問題