2016-04-12 11 views
6

クラウドネイティブアプリをCloud Foundryにデプロイするために取り組んでいます。最初は「Netflixのすべてのグッズを使用しましょう」の後、CFとの重複がNetflixコンポーネントの使用を正当化するかどうかを質問しました。Cloud Foundry/PaaS環境でのユーレカの価値?

特にユーレカの場合、サービスディスカバリに使用する予定でしたが、CFとルートによって非常に似通った機能がすぐに提供されています。私たちが見逃すことは、サービスのランタイム登録です(頻繁に変更されないアーキテクチャーは大きな課題ではなく、実際にはserviceID - > CFルートの静的マップとなります)とハートビート私はコンテナレベルでCFがすべてが問題ないことを確認していると仮定します)。

これで、CFを使用しているときにアプリケーション(実際のアプリ)でどのように使用するのでしょうか?アーキテクチャを維持することのメリットは何ですか?

はPS

レシェック

、ありがとうございます。 興味深いことに、ユーレカがserviceID - > CFルートの単純なマップを保存していれば、Zuulの値も下がります(LBはCFによって提供され、gorouterは非常に良いオプションです)。

答えて

3

ユーレカはアプリケーションIDを使用してサービスの検出を行いますが、これはアプリケーションデザインのコンテキストでのみ存在します。 Cloud Foundryルーティングはアドレス指定にURLを使用しているため、基盤となるインフラストラクチャのコードに依存します。

account-serviceにアクセスする必要がある場合は、その名前でお尋ねします。そのサービスのURLは、ローカルマシンでテストしているか、デプロイされているQAインスタンスを実行しているか、本番環境で実行しているかによって異なります。私は、アプリが実行されている場所とどの環境にどのURLがマップされているかを知る必要はありません。とにかくこれらのURLは時間とともに変化する可能性があります。

私がEurekaを使用している場合は、account-serviceを要求し、環境固有の問題は私のアプリケーションから抽象化されています。

+1

ハードコードされたURLを前提としていればtrueですが、私はconfigIDサービスを使用してserviceID - > cloud foundryルートマッピングの情報を保存するとどうなりますか?マッピングは、ローカルマシン、QA、PROD(春のプロファイルで区別されます)と異なり、私のアプリケーションから抽象化されます。私が正しいとすれば、このアプローチはユーレカがCFで与えるものを正確に与えてくれるが、各サービスから1つのコンポーネント(ユーレカサーバ)とユーレカクライアントライブラリを排除するだろう。だから私のポーからの純粋な勝利...? :) –

+2

これは確かに実行可能なアプローチですが、ルートを2か所に維持して同期させる必要があります。 cfに関連付けられたルートを定義する必要があります(たとえば、manifest.yml内)。次に、config-serverで一致するルートを定義する必要があります。何か変わったら、両方の場所で修正する必要があります。大規模なデプロイメントでは、これらの種類の自動化されていない同期化タスクを避けることはいいことです。しかし、あなたの環境でそれがうまくいくなら、それは素晴らしいことです! –

+0

良い点。ですから、私は既にアーキテクチャにRedisを導入していれば、そのようなserviceID - > routeのマッピングをRedisに保持することができます。メリット - 追加コンポーネントなしで、もし私が正しいのであれば、ユーレカのすべての価値がありますか? –

3

クラウドファウンドリーでは、ユーレカを使用することが過度なこともあると感じました。 しかし、私たちは、サービスの名前を外部化しトークン化するために1つのことを行いました。 configを管理するためには当初はSpring設定サービスが必要でしたが、サービスURLマップの中心的なソースとして使用できると感じました。 (カスタムコードは、中央のデータソースからロードするように書かれていなければなりませんでした)。

パスワード、サービスURLなど多くのものを含むカスタムデータストアを持つSpring設定サービスを作成しました。 カップを使用してSpring設定サービスに接続し、設定テンプレートにはトークンのセットが含まれていますオンザフライでサービスURL。

最初にconfigを管理するにはSpringコンフィグレーションサービスが必要ですが、サービスURLの中心的なソースとして使用できると感じました(カスタムコードをデータソースからロードするように書かなければなりません)。

クラウドファウンドリにはIPとポートがないため、ロードバランシングのために個々のインスタンスのヘルスチェックを追跡する必要はありません。 CFはそれを内部的にはかなり良い状態にします。 キー/トークンでhost.domainの名前をマップするための中心的なデータソースが必要です。例えば、 。 membership.v1 = https://membership-1-0-2

しかし、複数のデータセンターでホストされているサービスをCFで呼び出すことができるようにするには、ユーレカまたはconsul.ioが必要です。 CFクラスタは、データセンター間にまたがっていません。

関連する問題