Eureka構築とFeign実装サービスコール
4201 ワード
一、Eureka基本概念
EurekaはNetflixが開発したサービス発見フレームワークであり、SpringCloudはそれを自分のサブプロジェクトspring-cloud-netflixに統合し、SpringCloudのサービス発見機能を実現する.Eurekaには、Eureka ServicesとEureka Clientの2つのコンポーネントがあります.
Eureka Serverはサービス登録サービスを提供し、各ノードが起動すると、Eureka Serverに登録されます.これにより、EurekaServerのサービスレジストリには利用可能なすべてのサービスノードの情報が格納され、サービスノードの情報はインタフェースで直感的に見ることができます.
Eureka Clientはjavaクライアントであり、Eurekaサーバとのインタラクションを簡略化するために使用され、クライアントにはポーリング負荷アルゴリズムを用いた負荷イコライザも内蔵されている.アプリケーションが起動すると、Eureka Serverにハートビートが送信されます.デフォルトサイクルは30秒です.Eureka Serverが複数のハートビートサイクルでノードのハートビートを受信しない場合、Eureka Serverはサービスレジストリからこのサービスノードを削除します(デフォルト90秒).
Eurekaサーバ間では、レプリケーションによってデータの同期が完了し、すべてのEurekaサーバがオフになっても、クライアントはキャッシュ内の情報を利用して他のサービスのAPIを消費することができるクライアントキャッシュメカニズムも提供されています.以上より,Eurekaは心拍数検査,クライアントキャッシュなどのメカニズムにより,システムの高可用性,柔軟性,伸縮性を確保した.
二、モジュールの構築
1、親プロジェクトでSpring Cloudを定義したバージョン
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR2
pom
import
2、Eurekaサービスモジュールek-serviceを単独で作成する
3、pomファイルの構成
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
このモジュールをEurekaのserverとして登録
4、アプリケーションを配置する.properties
#
server.port=8002
# Eureka , ,
eureka.client.register-with-eureka=false
# Eureka
eureka.client.fetch-registry=false
#Eureka Eureka
eureka.client.service-url.defaultZone=http://127.0.0.1:${server.port}/eureka/
5、起動クラスの作成
起動クラスに注記@EnableEurekaServerを追加
@SpringBootApplication
@EnableEurekaServer
public class EkServerApplication {
public static void main(String[] args) {
SpringApplication.run(EkServerApplication.class);
}
}
三、クライアントの構成
1、クライアントマイクロサービス構成pom
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
2、クライアントマイクロサービスの配置アプリケーション.properties
#
eureka.client.service-url.defaultZone=http://127.0.0.1:8002/eureka/
#eureka ip ,
eureka.instance.prefer-ip-address=true
3、Eurekaクライアント注釈の追加
クライアントマイクロサービス起動クラスに注記@EnableEurekaClientを追加
四、Feign基本概念
四、サービスコールの実現
1.マイクロサービスにおける呼び出し側に依存を追加する
org.springframework.cloud
spring-cloud-starter-openfeign
2、呼び出し先の起動クラスに注記@EnableFeignClientsを追加する
3、呼び出し側にサービスを呼び出すためのパッケージとインタフェースを作成する
クライアントパッケージの作成
@Component
@FeignClient("Demo-service")
public interface DemoClient {
@GetMapping("/demoservice/demo/{demoId}")
public Result DemoMethod(@PathVariable("demoId") String demoId);
}
このコードの役割は、エンドマイクロサービスがDemo-serviceマイクロサービスという「/demoservice/demo/{demoId}」パスを呼び出す方法である.