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基本概念

  • FeignはNetflixが開発した宣言式、テンプレート化されたHTTPクライアントであり、FeignはHTTP APIをより迅速かつ優雅に呼び出すのに役立ちます.
  • Feignは、Feignが付随する注釈やJAX−RS注釈など、複数の注釈をサポートする.
  • Spring CloudはFeignを強化し、FeignはSpring MVC注釈をサポートし、RibbonとEurekaを統合し、Feignの使用をより便利にした.
  • Spring Cloud FeignはNetflix feignに基づいて実現され、Spring Cloud RibbonとSpring Cloud Hystrixを統合し、この2つの強力な機能を提供するほか、宣言的なWebサービスクライアント定義の方法も提供しています.
  • Spring Cloud Feignは、依存サービスインタフェースの定義と実装を支援します.Spring Cloud feignの実装では、インタフェースを作成し、注釈で構成するだけで、サービスプロバイダのインタフェースバインドを完了し、Spring Cloud Ribbonを使用するときにサービス呼び出しクライアントを自動的にカプセル化する開発量を簡素化できます.

  • 四、サービスコールの実現


    1.マイクロサービスにおける呼び出し側に依存を追加する

    
    
        org.springframework.cloud
        spring-cloud-starter-openfeign
    
    

    2、呼び出し先の起動クラスに注記@EnableFeignClientsを追加する


    3、呼び出し側にサービスを呼び出すためのパッケージとインタフェースを作成する


    クライアントパッケージの作成
  • @FeignClient注記は、どのサービスから機能を呼び出すかを指定するために使用されます.値は、呼び出されたマイクロサービスの名前です.
  • @GetMapping注記は、呼び出されたマイクロサービスをアドレスマッピングするために使用される.
  • @PathVariable注記パラメータ名を指定しないとエラー
  • @Component注記このクラスをspringコンテナにインスタンス化する
  • @Component
    @FeignClient("Demo-service")
    public interface DemoClient {
        @GetMapping("/demoservice/demo/{demoId}")
        public Result DemoMethod(@PathVariable("demoId") String demoId);
    }
    

    このコードの役割は、エンドマイクロサービスがDemo-serviceマイクロサービスという「/demoservice/demo/{demoId}」パスを呼び出す方法である.