[Spring Cloud戦闘:Eureka]サービスの登録と発見

Spring Cloud Eureka:サービスの登録と発見

Eurekaは、サービスの登録と検出を提供するオープンソースのNetflix製品であり、サービスレジストリとサービス検出の完全な実装を提供します。また、SpringCloudシステムで最も重要でコアなコンポーネントの1つです。

背景紹介

マイクロサービスは独立してデプロイされ、明確な境界があり、複雑なビジネス機能はサービス間のリモート呼び出しを通じて構築されます。
では、なぜサービスの登録と検出を参照する必要があるのでしょうか。サービスの登録と検出のために解決すべき具体的な問題は何ですか?

サービスの登録と検出は、主に次の2つの重要な問題を解決します。

  • 1)サービス間の相互依存の詳細をシールドおよび分離します。
    • サービス間のリモートコールは、互いのIPおよびポート情報を知っている必要があることを私たちは知っています。発信者のIPとポートを直接設定できます。このように、発信者はIPに直接依存し、ポートには明らかな問題があります。たとえば、着信IPとポートを変更した後、発信方法を同期的に変更する必要があります。
    • サービス検出により、サービス間のIPとポートの依存関係がサービス名の依存関係に変換されます。サービス名はマイクロサービスビジネスに応じて識別できます。したがって、シールドサービスとデカップリングサービス間の依存関係の詳細は、サービス検出と登録解決です。最初の質問。
  • 2)マイクロサービスの動的管理:
    • マイクロサービスアーキテクチャには多くのサービスがあり、サービス間の相互依存性も複雑です。サービスがアクティブに停止するか、予期せずハングするか、トラフィックの増加によってサービス実装が拡張されるかにかかわらず、サービスデータまたはステータスの動的な変更が必要です。被呼者にはできるだけ早く通知され、その後、被呼者は対応する措置を講じます。したがって、サービスの登録と検出では、オンラインでのサービス登録、オフラインでのサービスのアクティブ化、異常なサービスの削除など、サービスのデータとステータスをリアルタイムで管理する必要があります。

ユーレカ入門

Spring Cloudは、サービスの登録と検出を実装するためにNetflixによって開発されたEurekaモジュールをカプセル化します。EurekaはCSの設計アーキテクチャを採用しています。

  • ユーレカサーバーはサービス登録機能のサーバーであり、サービス登録センターです。システム内の他のマイクロサービスは、Eurekaのクライアントを使用してEurekaサーバーに接続し、ハートビート接続を維持します。
  • 保守担当者は、Eurekaサーバーを使用して、システム内の各マイクロサービスが正常に動作しているかどうかを監視できます。
  • Spring Cloudの他のいくつかのモジュール(Zuulなど)は、Eurekaサーバーを使用して、システム内の他のマイクロサービスを検出し、関連するロジックを実行できます。
  • Eurekaは、EurekaサーバーとEurekaクライアントの2つのコンポーネントで構成されています。Eurekaサーバーはサービス登録サーバーとして使用されます。
  • Eurekaの基本構造は、次の3つの役割で構成されています。
    • 1. Eurekaサーバー:サービスの登録と検出を提供します
    • 2.サービスプロバイダー:サービスプロバイダーは、他のサービスを見つけることができるように、独自のサービスをEurekaに登録します。
    • 3.サービス利用者:サービス利用者は、Eurekaから登録済みサービスのリストを取得し、サービスを利用できるようにします。

ユーレカ登録センターを建設する

Eurekaレジストリを作成して実行し、IDEAでSpringCloudアプリケーションを作成して実行するための正しい姿勢を確認しましょう。

  • 開発ツールのアイデア
  • Javaバージョン1.8
  • SpringBootバージョン2.3.1.RELEASE
  • SpringCloudバージョンHoxton.SR6

IDEAを使用してSpringCloudアプリケーションを作成する

  • クラウド学習プロジェクトの作成を学習するのに便利であり、ソースコードは将来GitHubに配置されます。
  • このプロセスを図に示します。
    フローチャートを作成する
  • 作成したばかりのプロジェクトで、eureka-learnモジュールを作成し、SpringInitializerを使用してSpringBootプロジェクトを初期化します。
  • このプロセスを図に示します。
    フローチャートを作成する
  • eureka-learnモジュールのpom.xmlファイルを開くと、追加のeureka-server依存関係があることがわかります。
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
  • @EnableEurekaServerアノテーションをスタートアップクラスに追加するだけで、eurekaレジストリの機能が有効になります
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaServiceApplication {
          
          
    
        public static void main(String[] args) {
          
          
            SpringApplication.run(EurekaServiceApplication.class, args);
        }
    }
    
  • 構成ファイルapplication.ymlを変更し、eurekaレジストリの関連する構成を追加します
    server:
      port: 8001 #指定运行端口
    spring:
      application:
        name: eureka-server #指定服务名称
    eureka:
      instance:
        hostname: localhost #指定主机地址
      client:
        fetch-registry: false #指定是否要从注册中心获取服务(注册中心不需要开启)
        register-with-eureka: false #指定是否要注册到注册中心(注册中心不需要开启)
      server:
        enable-self-preservation: false #关闭保护模式
    
  • 操作が完了したら、アドレスhttp:// localhost:8001 /にアクセスして、Eurekaレジストリのインターフェイスを確認します。
  • 写真が示すように:
    ページマップ

Eurekaクライアントサービスを構築する

  • プロジェクトに新しいeureka-clientモジュールを作成し、pom.xmlに次の依存関係を追加します
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
  • @EnableDiscoveryClientアノテーションをスタートアップクラスに追加すると、それがEurekaクライアントであることを示します
    @EnableDiscoveryClient
    @SpringBootApplication
    public class EurekaServiceClientApplication {
          
          
    
        public static void main(String[] args) {
          
          
            SpringApplication.run(EurekaServiceClientApplication.class, args);
        }
    }
    
  • Eurekaクライアントの関連する構成を構成ファイルapplication.ymlに追加します
    server:
      port: 8101 #运行端口号
    spring:
      application:
        name: eureka-client #服务名称
    eureka:
      client:
        register-with-eureka: true #注册到Eureka的注册中心
        fetch-registry: true #获取注册实例列表
        service-url:
          defaultZone: http://localhost:8001/eureka/ #配置注册中心地址
    
  • 登録センターhttp:// localhost:8001 /を確認し、Eurekaクライアントが正常に登録されていることを確認します
  • 写真が示すように:
    登録されたレンダリング

認定を受けたEurekaレジストリを構築する

  • eureka-security-serverモジュールを作成し、pom.xmlに次の依存関係を追加します
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
  • application.yml構成ファイルを変更します
    server:
      port: 8004
    spring:
      application:
        name: eureka-security-server
      security: #配置SpringSecurity登录用户名和密码
        user:
          name: peter
          password: 20200314
    eureka:
      instance:
        hostname: localhost
      client:
        fetch-registry: false
        register-with-eureka: false
    
  • Spring-Security依存関係が導入されたため、Java構成WebSecurityConfigを追加する必要があります
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
          
          
        @Override
        protected void configure(HttpSecurity http) throws Exception {
          
          
            http.csrf().ignoringAntMatchers("/eureka/**");
            super.configure(http);
        }
    }
    
  • eureka-security-serverを実行し、http:// localhost:8004にアクセスして、ログイン認証が必要であることを確認します
  • 写真が示すように
    ログイン認証が必要な画像

Eureka-クライアントはログイン認証で登録センターに登録します

  • レジストリのアドレス形式は、構成ファイルで変更する必要があります
    http://${
          
          username}:${
          
          password}@${
          
          hostname}:${
          
          port}/eureka/
    
  • application-security.yml構成ファイルを追加し、形式に従ってユーザー名とパスワードを変更します
    server:
      port: 8103
    spring:
      application:
        name: eureka-client
    eureka:
      client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
          defaultZone: http://peter:20200314@localhost:8004/eureka/
    

Eurekaの一般的な構成について

  • 構成は次のとおりです。
    eureka:
      client:  #eureka客户端配置
        register-with-eureka: true  #是否将自己注册到eureka服务端上去
        fetch-registry: true #是否获取eureka服务端上注册的服务列表
        service-url:
          defaultZone: http://localhost:8001/eureka/ # 指定注册中心地址
        enabled: true # 启用eureka客户端
        registry-fetch-interval-seconds: 30 #定义去eureka服务端获取服务列表的时间间隔
      instance: #eureka客户端实例配置
        lease-renewal-interval-in-seconds: 30 #定义服务多久去注册中心续约
        lease-expiration-duration-in-seconds: 90 #定义服务多久不去续约认为服务失效
        metadata-map:
          zone: jiangsu #所在区域
        hostname: localhost #服务主机名称
        prefer-ip-address: false #是否优先使用ip来作为主机名
      server: #eureka服务端配置
        enable-self-preservation: false #关闭eureka服务端的保护机制
    

レビュー

期待する

プロジェクトの送信元アドレス

おすすめ

転載: blog.csdn.net/Strive_Peter/article/details/113949635