ユーレカの紹介
Eurekaは、主にクラスターのサービス管理に使用されるRESTベースのサービスを提供しています。 Eurekaは、Java言語に基づいたクライアントコンポーネントを提供します。これは、負荷分散機能を実装し、ビジネスコンポーネントのクラスター展開の条件を作成します。このフレームワークを使用して、ビジネスコンポーネントはクラスターに展開できるユーレカコンテナに登録でき、ユーレカは主にこれらのサービスのリストを維持し、自動的にそのステータスをチェックします。
プログラム構造
eurekaサーバーを作成します
メイブン依存関係
<DependencyManagement> <Dependencies> <Dependency> <groupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-dependencies </artifactid> <bersion> dalston.sr1 </version> <type> pom </type> <scope> intomp/dependency> </depenty> </depency> < <gripid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-eureka-server </artifactid> </dependency> </dependencies>
Application.ymlのスプリングブートスタートアップポートを変更します
サーバー:ポート:8761
Eureka Service Annotation @EnableTeureKaserverを有効にします
@enabaleeurekaserver@springbootapplicationpublic class ekserverapplication {public static void main(string [] args){new SpringApplicationBuilder(ekserverApplication.class).run(args); }}スプリングブートを起動します
[スレッド11] oscneserver.eurekaserverbootstrap:初期化されたサーバーコンテキスト[メイン] sbcettomcatembeddedservletcontainer:tomcatはポートで開始されました:8761(http)[main] .scneseurekaautoserviceRegistration:Portを8761 [メイン] 8.594秒でのekserverApplication(9.523で実行されるJVM)
サーバーに接続できない例外が起動中に表示されます。これは、Eurekaが開始時に登録情報を取得するクライアントとしての地位を扱っているためです。
コードコピーは次のとおりです。
com.netflix.discovery.shared.transport.transportexception:既知のサーバーでリクエストを実行できません
次の構成を追加すると、開始時に再び表示されません
eureka:client:registerwitheureka:false fetchregistry:false
RegisterWitheurekaは、独自の情報をEurekaサーバーに登録するかどうかを宣言します。デフォルト値は真です。
Fetchregistryは、登録情報をEurekaサーバーにクロールするかどうかを宣言します。デフォルト値は真です。
ブラウザのhttp:// localhost:8761にアクセスして、eurekaコンソール入力の画像の説明を表示します
サービスプロバイダーを作成します
頼る
<Dependency> groupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-config </artifactid> </dependency> <dependency> groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-eureka </artifactid> </artifactid> </artifactid> </artifactid> <gripid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-ribbon </artifactid> </dependency>
Application.ymlでポート、Eurekaインスタンス名、およびEurekaサービスアドレスを構成する
サーバー:ポート:8080Spring:アプリケーション:名前:ek-providereureka:instance:hostname:localhost client:serviceurl:defaultzone:http:// localhost:8761/eureka/
休憩サービスを作成します
@RestControllerPublic Class HelloController {@RequestMapping( "/hello")public string hello(httpservletrequest request){return "hello:" + request.getRequesturl(); }}eureka client annotation @enableeurekaserverを有効にします
@enabaleeurekaclient@springbootapplicationpublic class ekproviderapplication {public static void main(string [] args){new SpringApplicationBuilder(ekproviderApplication.class).run(args); }}起動後、Eurekaコンソールで、サービスプロバイダーがEurekaに登録していることがわかります。
サービス発信者を作成します
頼る
<Dependency> groupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-config </artifactid> </dependency> <dependency> groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-eureka </artifactid> </artifactid> </artifactid> </artifactid> <gripid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-ribbon </artifactid> </dependency>
Application.ymlでポート、Eurekaインスタンス名、およびEurekaサービスアドレスを構成する
サーバー:ポート:9000spring:アプリケーション:名前:ek-invokeeureka:instance:hostname:localhost client:serviceurl:defaultzone:http:// localhost:8761/eureka/
サービスプロバイダーの「/hello」に電話するための休憩サービスを書く
@retycontroller @configurationpublic class invokecontroller {@bean @loadbalanced public rettemplate getRestTemplate(){return new RestTemplate(); } @RequestMapping( "/invoke")public string invoke(){retttemplate rettemplate = getRestTemplate(); RESTTEMPLATE.getForObject( "http:// ek-provider/hello"、string.class); }}従来のモードでは、通常、ApacheのHttpClientを使用してRESTサービスを呼び出します。ここでは、Springを使用して、RESTサービスを呼び出すRESTTEMPLATEコンポーネントを提供します。 RestTemplate自体には分散サービスを呼び出す機能はありませんが、RestTemplate Beanが@loadbalanced Annotationによって変更された後、このRestTemplateインスタンスは、Springが提供するさまざまなインターセプターのおかげで、分散サービスにアクセスする機能を備えています。
eureka client annotation @enableeurekaserverを有効にします
@enabaleeurekaclient@springbootapplicationpublic class ekinvokeapplication {public static void main(string [] args){new SpringApplicationBuilder(ekinvokeapplication.class).run(args); }}スタートアップの後、Eurekaコンソールでは、サービス発信者がEurekaに登録されていることがわかります。
次に、ブラウザ内のサービス発信者の「Invoke」インターフェイスにアクセスします。次のように返します
要約します
eurekaサーバーは、メモリに保存されているハートビートリンクを通じて最新の登録情報を維持しています。
eurekaサービスプロバイダーは主に実施しています。
eurekaサービス発信者は主に行動します。
ソースコードアドレス:https://github.com/xc564864894/springcloud/tree/master/eureka(%e4%B8%80)
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。