Eurekaは、サービス登録と発見を提供するNetflixのオープンソース製品であり、サービスレジストリとサービスの発見の完全な実装を提供します。また、SpringCloudシステムで最も重要でコアコンポーネントの1つです。
背景の紹介
サービスセンター
サービスセンターは登録センターとも呼ばれ、Dubbo管理の背景のさまざまな機能など、サービス登録、発見、サーキットブレーカー、負荷、格下げなどを含むさまざまなサービス機能を管理します。
サービスセンターコールリレーションシップでどのような変化が起こりますか?あなたが理解するのに役立ついくつかの簡単な図を描きます
プロジェクトAコールプロジェクトb
通常、プロジェクトAを呼び出してプロジェクトbを要求します
サービスセンターを設置した後、サービスを削除して直接使用することはできず、サービスセンターを通じて呼び出す必要があります。
プロジェクトAコールプロジェクトB、プロジェクトBはプロジェクトCを呼び出しています
現時点では、呼び出す手順は2つの手順です。最初のステップは、プロジェクトAがサービスセンターからプロジェクトBサーバーを最初にリクエストし、プロジェクトBがサービスセンターからプロジェクトCサービスを要求することです。
上記のプロジェクトは2〜3件の間の単純な呼び出しですが、20を超えるプロジェクトと30のプロジェクトがある場合、当社の分散プロジェクトは2015年末までに20以上に達しました。数十のプロジェクトとすべてが行われることを説明するために絵を描きます。プロジェクトの1つを変更すると、いくつかのプロジェクトが再起動することが含まれますが、これは非常に面倒でエラーが発生しやすいです。サービスセンターを通じてサービスを取得するには、呼び出すプロジェクトIPアドレスに注意を払う必要はありません。いくつかのサーバーで構成されています。サービスセンターに行くたびに、利用可能なサービスを受けることができます。
あらゆる種類のサービスがサービスセンターに登録されているため、多くの高度な機能があります。たとえば、いくつかのサービスが負荷のバランスをとるのと同じサービスを提供します。サーバーコールの成功率を監視して回路を壊すことを実行し、サービスリストの障害ポイントを削除します。サービスコール時間を監視して、さまざまなサーバーなどに異なるウェイトを設定します。
ユーレカについて話す前に、Netflixについてゴシップします
Netflix
以下の紹介は、Baidu百科事典からのものです。
Netflixは、米国とカナダのオンサイトでオンラインストリーミングメディアを提供するアメリカの企業、およびカスタムDVDおよびBlu-rayディスクオンラインレンタルサービスです。 1997年に設立された同社は、カリフォルニア州ロスガチュに本社を置き、1999年にサブスクリプションサービスを開始しました。2009年には、最大100,000のDVD映画を提供し、1,000万人の加入者がいました。 2007年2月25日、Netflixは10億DVDを販売したと発表しました。彼のレポートによると、2011年にNetflixのオンライン映画販売は、米国のユーザーのオンラインムービー販売の45%を占めています。
この言葉を初めて見たとき、それはさまざまなアメリカのドラマや映画の冒頭でした。 Netflixが撮影した代表的なアメリカのドラマには、「ハウスオブカード」、「ドラッグロード」、「ストレンジャーシングス」が含まれます。その後、SpringCloudを勉強していたとき、Netflix企業を発見し、彼らが同じ会社なのか疑問に思いました。 GitHubで電子メールの接尾辞をチェックした後、私はそれが実際に同じ会社であると判断しました。実際、SpringCloudのマイクロサービスは、Netflixのオープンソース製品に基づいています。
Netflixのオープンソースフレームワークコンポーネントは、Netflixの大規模な分散マイクロサービス環境で何年も証明されており、マイクロサービスフレームワークを構築するための標準コンポーネントとしてコミュニティに徐々に受け入れられています。 Spring Cloud Open Source製品は、主にNetflixのオープンソースコンポーネントのさらなるパッケージングに基づいており、Spring Developersが基本的なマイクロサービスフレームワークを構築することを容易にします。マイクロサービスフレームワークシステムを構築する予定の一部の企業にとっては、Netflixのオープンソースマイクロサービスコンポーネント(またはスプリングクラウド)を最大限に活用または参照し、これに基づいて必要なエンタープライズのカスタマイズを実施することは、間違いなくマイクロサービスアーキテクチャのショートカットです。
ユーレカ
公式の紹介によると:
Eurekaは、中層サーバーの負荷分散とフェールオーバーを目的としてサービスを見つけるためにAWSクラウドで主に使用される休息(代表的な状態転送)ベースのサービスです。
Eurekaは、主にAWSクラウドで使用されているRESTベースのサービスであり、中間層サーバーのバランスとフェールオーバーをロードするサービスを見つけます。
Spring Cloudは、Netflixによって開発されたEurekaモジュールをカプセル化して、サービスの登録と発見を可能にします。ユーレカはCSデザインアーキテクチャを採用しています。 eurekaサーバーは、サービス登録機能を備えたサーバーであり、サービス登録センターです。システム内の他のマイクロサービスは、Eurekaのクライアントを使用してEurekaサーバーに接続し、ハートビート接続を維持します。このようにして、システムのメンテナンス担当者は、システム内の各マイクロサービスが通常Eurekaサーバーを介して実行されているかどうかを監視できます。 Spring Cloudの他のいくつかのモジュール(Zuulなど)は、Eureka Serverを使用してシステム内の他のマイクロサービスを発見し、関連するロジックを実行できます。
Eurekaは、EurekaサーバーとEurekaクライアントの2つのコンポーネントで構成されています。 eurekaサーバーは、サービス登録サーバーとして使用されます。 Eurekaクライアントは、サーバーとの対話を簡素化し、ポーリングロードバランサーとして機能し、サービスフェールオーバーサポートを提供するために使用されるJavaクライアントです。 Netflixは、生産環境で別のクライアントを使用します。これは、トラフィック、リソース利用、エラーステータスに基づいて加重負荷分散を提供します。
写真を使用して以下を理解してください。
上記の図は、3つの役割で構成されるユーレカの基本的なアーキテクチャについて簡単に説明しています。
1。ユーレカサーバー
2。サービスプロバイダー
3。サービス消費者
ケースプラクティス
eurekaサーバー
Spring Cloudは、サービス登録センターの実装に役立ちましたが、完了するにはいくつかの簡単な手順しか必要ありません。
1. POMに依存関係を追加します
<Dependencies> <Dependency> <GroupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter </artifactid> </dependency> <dependency> groupid> org.cloud </groupid> <artifactid> spring-eureka-server </artifid> </artifid> <GroupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> <scope>テスト</scope> </dependency> </dependencies>
2. @EnableEurekaServerアノテーションをスタートアップコードに追加します
@springbootapplication@enableeurekaserverpublic class springcloudeurekaapplication {public static void main(string [] args){springapplication.run(springcloudeurekaapplication.class、args); }}3。構成ファイル
デフォルトでは、サービスレジストリもクライアントとして登録しようとするため、クライアントの登録動作を無効にし、 application.propertiesに次の構成を追加する必要があります。
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseeureka.client.fetch-registry = falseeureka.client.serviceurl.defaultzone = http:// localhost:$ {server.port {eureka/eureka.client.register-with-eureka :eurekaサーバーに登録するかどうかを示します。デフォルトは真です。eureka.client.fetch-registry :eurekaサーバーから登録情報を取得するかどうかを示します。デフォルトはTRUEです。eureka.client.serviceUrl.defaultZone :eurekaサーバーと対話するためにアドレスを設定します。クエリサービスと登録サービスの両方がこのアドレスに依存する必要があります。デフォルトはhttp:// localhost:8761/eurekaです。複数のアドレスを使用して分離できます。プロジェクトを開始した後、http:// localhost:8000/にアクセスしてください。
クラスタ
登録センターなどの重要なサービスは、単一のポイントである場合、失敗に遭遇することは壊滅的です。分散システムでは、サービス登録センターは最も重要な基本的な部分であり、いつでもサービスを提供できる状態である必要があります。その可用性を維持するために、クラスターを使用することは良い解決策です。 eurekaは、互いに登録することで非常に利用可能な展開を実装するため、非常に利用可能な展開を実現するために、他の利用可能なサービスを構成するようにeurekeサーバーを構成するだけです。
デュアルノード登録センター
初めて、デュアルノード登録センターを構築しようとします。
1. PEER1サービスセンターの構成としてアプリケーション-PEER1.PROPERTIESを作成し、PIER2にPoint ServiceUrl
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.instance.hostname = peer1eureka.client.serviceurl.defaultzone = http:// peer2:8001/eureka/
2。PEER2サービスセンターの構成として、アプリケーション-PEER2.PROPERTIESを作成し、PIER1にPoint ServiceUrl
spring.application.name = spring-cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http:// peer1:8000/eureka/
3.ホスト変換
ホストファイルに次の構成を追加します
127.0.0.1 PEER1 127.0.0.1 PEER2
4。パッケージの開始
次のコマンドを順番に実行します
#package MVNクリーンパッケージ#それぞれPEER1とPEEER2構成情報でEurekajavaを開始-Jar Spring-Cloud-Eureka-0.0.0.1-Snapshot.jar ---Spring.profiles.active
1つずつ開始した後、ブラウザは次のように入ります: http://localhost:8000/レンダリングは次のとおりです。
図によると、PEER1の登録センターのDSレプリカには、PEER2の関連する構成情報があり、利用可能なReplicasに表示されることがわかります。 PEER2を手動で停止して観察し、Peer2が利用できないReplicasカラムに移動し、Peer2が利用できないことを示しています。
このデュアルノードの構成が完了しました。
Eurekaクラスターの使用
生産では、サービスの安定性を確保するために、3つ以上の登録センターが必要になる場合があります。構成原則は実際には同じであり、登録センターをそれぞれ他の登録センターに指します。ここでは、3つのクラスターの構成のみを紹介します。実際、それはデュアルノード登録センターに似ています。各登録センターは、それぞれ他の2つのノードを指すことができ、Application.ymlを使用して構成できます。
Application.yml構成の詳細は次のとおりです。
- スプリング:アプリケーション:名前:spring-cloud-eurekaプロファイル:peer1server:port:8000eureka:instance:hostname:peer1 client:serviceurl:http:// peer2:8001/eureka/、http:// peer3:8002/eureka/ - spring:spring-clute:spring-clure: PEER2SERVER:PORT:8001EUREKA:INSTANCE:HOSTNAME:PEER2 CLIENT:SERVICEURL:defaultZone:http:// peer1:8000/eureka/、http:// peer3:8002/eureka/--- spring:アプリケーション:spring-cloud-cloud-cloud-cloud-eureka Profimes:Portedervers:Porteka Profiles:Peer3serverホスト名:PEER3クライアント:ServiceUrl:defaultZone:http:// peer1:8000/eureka/、http:// peer2:8001/eureka/
それぞれPEER1、PEER2、およびPEER3の構成パラメーターを使用して、Eureka登録センターを開始します。
Java -jar Spring-Cloud-eureka-0.0.1-Snapshot.jar ---Spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar - spring.profiles.active = peer2java -spring.profiles.active = peer3
1つずつ開始した後、ブラウザは次のように入ります: http://localhost:8000/レンダリングは次のとおりです。
PEER1でPEER2とPEER3に関する関連情報を見ることができます。これまでのところ、ユーレカクラスターが完了しています
サンプルコード
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。