1

Dropwizard を使用してマイクロサービスを開発しているので、Dropwizard の 1 つの実行中のインスタンス/アプリケーションと多数のインスタンスで多くのリソースを持つことのバランスを見つけようとしています。

たとえば、3 つのリソースを持つ project-A があります。別のプロジェクト B で、プロジェクト A のリソースの 1 つを使用したいと考えています。共通のリソースは、ユーザー データに関連しています。今私は次のようなオプションがあります:

  • project-B から project-A のユーザー リソースへの http 呼び出しを行います。ここでdropwizardのクライアントアプローチを使用できます
  • ユーザー リソースは共通であるため、project-A から取り出して project-C と言うことができます。そして、プロジェクト A とプロジェクト B の両方でクライアント コードを作成する必要があります。
  • ユーザー コードを含む jar を抽出し、プロジェクト B で使用できます。これにより、http 呼び出しが回避されます。

専門家の意見を聞きたいもう 1 つの点は、マイクロサービスの異なるインスタンス間の通信に関連するネットワーク呼び出しのバランスを取り、最小化する方法です。一般に、異なるインスタンス間の通信には http を使用する必要がありますか? または、他のプロセス間通信アプローチをパフォーマンス自体に使用できますか[特に、異なるインスタンスが同じシステム上にある場合]?

これは、マイクロサービスの世界の新規参入者にとって一般的な問題/混乱になる可能性があると思います. したがって、一般的なガイドラインやベストプラクティスを知りたい.

どうもありがとう

プラディープ

4

4 に答える 4

1

project-B から project-A のユーザー リソースへの http 呼び出しを行います。ここでdropwizardのクライアントアプローチを使用できます

私があなただったら、このオプションを追求しません。サービスが不必要に遅くなり、ロギングの問題が発生する可能性があり、気分が悪くなります。これが意味をなす唯一の場合は、コードが制御不能になった場合です (ただし、その場合でも、おそらくより良い解決策があります)。

ユーザー リソースは共通であるため、project-A から取り出して project-C と言うことができます。そして、プロジェクト A とプロジェクト B の両方でクライアント コードを作成する必要があります。

ユーザー コードを含む jar を抽出し、プロジェクト B で使用できます。これにより、http 呼び出しが回避されます。

プロジェクト A とプロジェクト B は、いくつかの共通の依存関係を持つ論理的に異なるユニットのようです。マルチモジュール プロジェクト (または、Maven を使用している場合はマルチモジュール Maven プロジェクト) を検討することは理にかなっています。個別のプロジェクト モジュールによって参照される共通コード (およびリソース) を含むモジュールを持つことができます。これは、これらすべての依存関係を管理できる Maven が本当に優れているところです。リストした最後の2つのオプションの組み合わせのようなものです。

于 2014-05-15T23:54:00.427 に答える
0

それは基本的に設計上の選択です。小さなサービスのそれぞれのシンプルさと、それらを調整する必要がある複雑さと全体的な待ち時間の結果とをトレードする準備ができていますか?

小規模なサービス アプローチを選択した場合は、 http ://dropwizard.io/manual/core.html#organizing-your-projectのドキュメント ガイドラインに従うことができます。API 用の 3 つのモジュールを含む 1 つのプロジェクト (消費者から参照可能) )、アプリケーション、およびオプションのクライアント (コンシューマーでも使用される可能性があります)

あなたが答えなければならないその他の質問: - 各サービスは別々の SCM リポジトリでホストされます...またはそうではありません - 各サービスは独自のバージョンを持つことができます (すべきですか?)

于 2015-03-21T13:08:14.943 に答える