Spring Cloud Eurekaとは何ですか
Spring Cloud Eurekaは、Spring Cloudのコンポーネントです。 Netflix Eurekaに基づいて二次カプセル化されています。これは、主にマイクロサービスフレームワークでサービスガバナンス機能の完了を担当しています。 Spring Cloudは、Spring Bootスタイルの自動化構成をEurekaに追加します。 Spring Bootがeurekaサービスガバナンスシステムと簡単にマイクロサービスアプリケーションを簡単に統合できるようにするために、簡単な参照依存関係と注釈のみが必要です。
サービスガバナンス
サービスガバナンスは、マイクロサービスフレームワークで最もコアおよび基本的なモジュールです。主に、さまざまなマイクロサービスインスタンスの自動登録と発見を実現するために使用されます。
当初、構築される可能性のあるマイクロサービスシステムサービスはあまりありませんでした。静的構成を通じてサービスの呼び出しを完了することができます。たとえば、2つのサービスAとBがあります。サービスAがサービスBを完了するためにサービスBを呼び出す必要がある場合、サービスBの高可用性を達成するために、サーバーで複雑なバランスを使用するか、クライアントでロードバランシングを使用するかにかかわらず、Bインスタンスリストを手動で維持する必要があります。ただし、ビジネスの開発により、システム機能はますます複雑になり、対応するマイクロサービスがますます困難になっています。
この問題を解決するために、多数のサービスガバナンスフレームワークと製品が生成されました。これらのフレームワークは、実際にサービス登録とサービスの発見メカニズムを中心に展開し、マイクロサービスアプリケーションインスタンスの自動管理を完了します。
サービス登録
サービスガバナンスフレームワークでは、通常、サービス登録センターが構築されます。各サービスインスタンスユニットは、登録センターで独自のサービスを登録し、登録センターにインスタンスホストの場所、ポート番号、バージョン番号、通信プロトコルなどなどの一連の追加情報を指示し、登録センターはサービス名に従ってサービスリストを整理します。
サービスの発見
サービスガバナンスフレームワークの下で運営されているため、サービス間の通信と通話は、特定のインスタンスアドレスを指定することではなく、サービス名へのリクエストコールを開始することで実装されます。したがって、サービス発信者がサービスプロバイダーのインターフェイスを呼び出すと、特定のサービスインスタンスの場所を知りません。したがって、最初にレジストリへのクエリ要求を開始し、特定のサービスインスタンスへのアクセスを実現するためにインスタンスリストを取得する必要があります。
ユーレカ登録センターサービスを構築します
単一のセンターユーレカを構築します
その後のすべての開発は、上記のバージョンに基づいています。 Sring Cloudはスナップショットバージョンを使用しているため、POMファイルのリポジトリのアドレスを指定する必要があることに注意する必要があります。
まず、新しいSpring Bootプロジェクトを作成しました。これは、Spring-Cloud-eurekaという名前で、POMに必要な依存関係を追加します。特定のPOMファイルは次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modeleversion> 4.0.0 </modelversion> <グループ<グループ</groupid> <artifactId>spring-cloud-eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-cloud-eureka</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <バージョン> 2.0.2.Release </version> <RecationPath/> <! - リポジトリからの外観の親 - > </parent> <Properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> <Java.version> 1.8 </java.version> <spring-cloud.version> finchley.build-snapshot </spring-cloud.version> </properties> <dependencies> <dependency> <shiplencyd> org.springframework.boot </groupid> spring-boot-startartertartertartertartertartertartertorter-webbeb <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-cloud-starter-netflix-eureka-server </artifactid> </dependency> <dependency> <groupid> org.springframework.boot </groupid> <artifactid> sprutiftest </scope> </scope> </scope </Dependency> </Dependency> </Dependencies> <DependencyManagement> <Dependencies> <Dependency> org.springframework.cloud </groupid> <artifactid> spring-cloud-dependencies </artifactid> <バージョン> $ {spring-cloud.version} < </dependency> dependency> </DependencyManagement> <burting> <blugins> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid>スナップショット</name> <url> https://repo.spring.io/snapshot </url> <SnapShots> <Enabled> true </enabled> </snapshots> </repository> <リポジトリ> <id> spring-milestones </id> spring mirestones </name </name> <url> https://repo.spring.io/milestone </url> <snapshots> <enabled> false </enabled> </snapshots> </repository> </repositories> </project>サービスレジストリを開始して、 @enableteurekaserverアノテーションを通じて他のアプリケーションに会話を提供します。このステップは非常に簡単です。このアノテーションを通常のスプリングブートアプリケーションに追加して、この機能を有効にするだけです。
@springbootapplication@enableeurekaserverpublic class applicationeurekaserver {public static void main(string [] args){springeurekaserver.class、args); }}デフォルトの構成では、登録センターサーバーもクライアントとして登録します。一般に、この機能を無効にする必要があり、修正されたapplication.ymlは次のとおりです。
#Spring ConfigSpring:Application:name:name:spring-boot-eureka#server configserver:port:9871#eureka configureureka:instance:hosthostクライアント:登録クライアント:eureka:false#登録センターに登録しないでください:フェッチregistry:false http:// $ {eureka.instance.hostname}:$ {server.port}/eureka/私たちはすべてローカルで実行されているため、その後のサービスの区別のために、Server.portを介してサービスレジストリのポートを設定して、ポートを実行してください:9871
上記の構成を完了したら、アプリケーションを開始し、http:// localhost:9871にアクセスします。現在、ユーレカに登録されているインスタンスのリストが空である次のページを見ることができ、登録センターに登録されているサービスがないことを示しています。
誰もが上記の目を引く赤い言葉の2つのラインに気づいたと思います:
緊急!ユーレカは、そうでないときにインスタンスが上昇していると誤って主張している可能性があります。更新はしきい値よりも少ないため、安全であるためだけにインスタンスが期限切れになっていません。
原因:自己保護メカニズム。 Eurekaサーバーの操作中、ハートビート障害の割合が15分以内に85%未満であるかどうかをカウントします。それが発生した場合(スタンドアロンのデバッグ中に満足するのは簡単ですが、実際には通常、生産環境でのネットワークの不安定性によって引き起こされます)、Eureka Serverは現在のインスタンス登録情報を保護し、この警告を促します。
この問題はスタンドアロンの状況で発生する傾向があるため、オンライン構成に従って自己保護をオフにした後、ユーレカはアラームを呼び出し、セーフモードがオフになり、インスタンスの正しさを保証できないことを促します。したがって、当面はこの問題を無視し、クラスターの展開が後であるときに解決することができます。
サービスプロバイダーを登録します
登録センターサービスの確立を完了した後、既存のスプリングブートアプリケーションをユーレカのサービスガバナンスシステムに追加することを試みることができます。
私たちはまだ前のスプリングクラウドサーバーを例として取ります。次のApplication.ymlの構成を変更する必要があります。
#アプリケーション名スプリング:アプリケーション:名前:spring-cloud-server#eureka登録センター場所eureka:client-url:defaultzone:http:// localhost:9871/eureka/
変更が完了した後、サービスを開始できます。この時点で、Eurekaの管理ページを更新し、次のように現在Eurekaに登録されているインスタンスのリスト情報をご覧ください。
これは、当社のサービスが登録センターに正常に登録されていることを示しています。
関連例コード:https://github.com/sagesource/spring-cloud-set
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。