2017-09-24 19 views
-1

私はマイクロサービスアーキテクチャを使って簡単なアプリケーションを構築しようとしています。 私が作成した3つのマイクロサービスの詳細を以下に示します。は、スプリングを使用したマイクロサービスのための最高のAPIゲートウェイですか?

1] Customer. 
     database: mongodb 
     server : embeded tomcat server. 
     port : 8081 
2] vendor. 
     database: mongodb 
     server : embeded tomcat server. 
     port : 8082 
3] product. 
     database: mongodb 
     server : embeded tomcat server. 
     port : 8083 

すべての3つのマイクロは、埋め込まれたtomcatサーバー上で実行されます。 ここで、これらすべてのマイクロ[APIゲートウェイ]の共通ゲートウェイを作成したいと考えています。 私はリクエストに基づいてリクエストをルーティングするのに役立ちます。たとえば、の場合は、http://hostname:port_of_gateway/customerというリクエストがあります。 これを読んで私は顧客のマイクロを要求してトムをルーティングし、その応答を取り出してクライアントに送り返す必要があります。私はこれを達成するために春のツールのどれを使用できますか?

答えて

1

要件が非常に簡単なため、このようなゲートウェイを自分で実装することができます。ここにはan exampleがあります。

しかし、実際にSpringソリューションを使用したい場合は、Spring Cloud傘プロジェクトの一部であるSpring Cloud Netflixを使用してみてください。これには、ルータとフィルタの機能が含まれており、順番にはNetflix Zuulゲートウェイサービスに基づいています。

これは完全なスタンドアロンアプリケーションではなく、ライブラリであることに注意してください。したがって、アプリケーションでAPIゲートウェイとして機能する別のマイクロサービスを作成する必要があります。それをゲートウェイにするには、アノテーションを持つ同じクラスに@EnableZuulProxyアノテーションを追加するだけです。あなたは非常に良い例hereを見つけることができます。

リダイレクトのために、マイクロサービスのアドレスについてゲートウェイに何らかの理由で通知する必要があることにも注意してください。

  1. ゲートウェイマイクロサービスの設定でアドレスを静的に定義することで、
  2. service discovery patternを、例えば、 Netflix Eurekaサービスレジストリ。

アプローチは簡単で単純であるが、microservices及び/又はmicroservices'の位置を動的に変更することができる場合(例えばによる自動スケーリング)の多数のために非常によくありません。
第2アプローチでは、コンポーネントサービスレジストリの追加が必要であり、他のマイクロサービスの変更が必要です(レジストリに自分自身を登録させるため)。これはかなり複雑なアプローチですが、複雑なアーキテクチャの場合にのみ可能です。シンプルで表現力豊かな例は、same articleにあります。

+0

メモのために@ g00glen00bありがとうが、私はZuulがユーレカを必要とすることを述べていない。最初のアプローチはズールを言及していません。また、第2のアプローチはユーレカのみを必要としません。アプリケーションのデザイナーには、どのようなアプローチとどのツールを選択するかは全く異なります。 – Toparvion

関連する問題