見出しに、3つのバズワードがありました:
- マイクロサービス
- NetflixEureka
Discovery(レジストリー)
Wat Is a Microservice?
簡単に言うと、マイクロサービスとは、完全なソリューションを提供するために協調して一緒に動作する小さなアプリケーションのクラスタです。
多くの小さなアプリケーションが一緒に独立して動作するというと、それらはすべて独自の URL とポートを持っているでしょう。 そのシナリオでは、これらすべてのマイクロサービスが同期して実行されるように、そしてより重要なことに、モニタリングで維持することは非常に面倒です。
この問題を解決するには、エコシステム内のすべてのマイクロサービスのレジストリを監視および保守するツールが必要です。 Eureka ServerとEurekaクライアントで構成されています。 Eureka Serverはそれ自体がマイクロサービスであり、他のすべてのマイクロサービスが登録される。 Eureka Clientsは、独立したマイクロサービスである。
私はSpring Bootを使用して、Eurekaクライアントとして動作するいくつかのマイクロサービスと、EurekaサーバーとなるDiscovery Serverを作成する予定です。 以下は、完全なプロジェクト構造です:
Let’s Discuss the Eureka Discovery Server
これは Eureka Server で、そのために、プロジェクトに Eureka 依存症を含める必要があります。 以下は、Eureka Discovery Server の pom.xml です。
また、このプロジェクトのプロパティ ファイルを更新して、それがクライアントではなく発見サーバーであることを示す必要があります。
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Discovery アプリケーションを特定のポートにバインドし、アプリケーションに名前を付けるには、以下を追加する必要があります:
server.port=8000spring.application.name=DiscoveryServer
最後に行うことは、これを Eureka Server として有効にするために Spring Boot アプリケーションに注釈を付けることです。 そのためには、@EnableEurekaServer
.
アプリケーションを起動すると、Eurekaが提供するUIで、登録したすべてのサーバーを一覧表示することができるようになります。 しかし、この時点では、何もありません!
さて、エコシステムにいくつかのマイクロサービスを追加して、それらをディスカバリー サーバーに登録しましょう。 このためには、各サービスで必要な依存関係を追加して、サーバーに登録する必要もあります。
私は Spring Boot で 3 つのシンプルなマイクロサービス (microservice1, microservice2, microservice3) を作成し、それぞれが独自のポート (8002, 8003, 8004) で動作しています。
クライアントとして、それはサーバーに登録する必要がありますが、これは以下のようにプロパティ ファイルに起こります。
メイン アプリケーションは、それぞれのマイクロサービスにおいて @EnableEurekaClient
でアノテーションされます。
ポート 8004 で実行するようにこのアプリケーションを起動すると、自動的にディスカバリー サーバに自身を登録することができます。 同様に、さらに 2 つのマイクロサービスを作成し、ディスカバリー サーバーに登録しました。
エコシステムの中で 3 つのサーバーが実行されていることがわかり、これらのサーバーの状態も監視することができます。
これにより、ロード バランサーを使用している場合、すべてのサーバーとそのレプリカの監視が容易になります。
Eureka を使用して Discovery Server およびクライアントを使い始める際に、これが役立つことを願っています。