springboot+springcloudの学習---マイクロサービス登録(Eureka登録センター)

エウレカレジストリ

ほとんどのサービスは Spring Cloud のコンポーネントを使用するため、親プロジェクトの pom.xml に Spring Cloud の依存関係を導入します。springBootのバージョンに注意してください
クラウドとブートのバージョン対応

<!--版本锁定-->
<properties>
    <spring.cloud-version>Hoxton.SR12</spring.cloud-version>
</properties>
<dependencyManagement>
    <dependencies>
        <!--spring Cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${
    
    spring.cloud-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

エウレカサーバーを構築する

まず、レジストリ サーバー eureka-server を構築します。このサービスはレジストリのタスクのみを担当し、他のビジネス機能を追加する必要がないため、独立したマイクロサービスである必要があります。

1. Eureka-serverとしてモジュールを作成

モジュールを作成する

2. 依存関係のインポート: netflix-eureka-server

<!--eureka-server依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3. application.yaml ファイルを作成し、構成を追加します: ポート、サービス名、eureka サーバーのアドレス、登録関連の構成

server:
  port: 10086

spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: 127.0.0.1 # 服务地址
    
  client:
    #是否向注册中心注册自己,默认值:true。Eureka服务端是不需要再注册自己的。
    register-with-eureka: false
    #是否从Eureka获取注册信息,默认值:true。Eureka服务端是不需要的。
    fetch-registry: false

4. Eureka サービスを開始するためのスタートアップ クラスを作成します。

@SpringBootApplication
//开启Eureka注册中心功能
@EnableEurekaServer
public class EurekaServerApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

5. テスト: eureka サービスにアクセスします

マイクロサービスを開始し、ブラウザーで http://127.0.0.1:10086 にアクセスすると
、次の結果が成功することを確認します。エウレカサービスにアクセスする

サービス登録

次に、eureka-serverにuser-serviceを登録します。

1. 依存関係 eureka-client を導入する

<!--eureka客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2. 構成を追加します: サービス名、eureka サーバーのアドレス

user-service で、application.yml ファイルを変更し、サービス名と eureka アドレスを追加します。

spring:
  application:
    # 服务名称,如果不添加,服务端默认显示的服务名是UNKNOWN
    name: user-service

eureka:
  client:
    service-url:
      # EurekaServer地址
      defaultZone: http://127.0.0.1:10086/eureka

3. ユーザーサービステストの開始(複数)

サービスに複数のインスタンスがあるシナリオを示すために、SpringBoot スタートアップ構成を追加し、ユーザー サービスを開始します。テストを開始する
次に、ポップアップ ウィンドウで次の情報を入力します。情報を記入してください

3 つのユーザー サービスを開始する

サーバーにアクセスして最新の登録情報を表示します登録メッセージ

サービスの検出 (あるマイクロサービスが別のマイクロサービスを呼び出す)

次に、order-service は eureka-server からユーザー サービス情報を取得し、サービス ディスカバリを実現します。

依存関係 Eureka-client を導入する

サービス検出とサービス登録はすべて eureka-client 依存関係にカプセル化されているため、この手順はサービス登録と一致します。
order-service の pom ファイルに、次の eureka-client 依存関係を導入します。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

構成の追加: サービス名、Eureka-Server アドレス

サービス検出では、エウレカ アドレスを知る必要もあり、エウレカ情報を構成します。
order-service で、application.yml ファイルを変更し、サービス名とエウレカ アドレスを追加します。

spring:
  application:
    # 服务名称
    name: orders-ervice
eureka:
  client:
    service-url: 
      # 注册中心地址
      defaultZone: http://localhost:10086/eureka  # 自己的地址  最后的eureka记得要加上

サービス検出、負荷分散

最後に、登録センターに移動して、ユーザー サービス サービスのインスタンス リストを取得し、負荷分散を実装する必要があります。

ただし、これらのアクションを実行する必要はなく、いくつかの注釈を追加するだけで済みます。

order-service の OrderApplication で、@LoadBalancedRestTemplate Bean にアノテーションを追加します。
注釈を追加する
次に、ビジネス コード内のコードを次のように変更します。
ビジネス変更コード

  • サービス名を使用してインターフェイスを呼び出します
  • ブラウザで http://localhost:8080/order/102 にアクセスすると、コンソールに 3 つのユーザー サービスの出力が表示されます。デフォルトはポーリング呼び出しです。

負荷分散機能を実現するために @LoadBalanced アノテーションを追加しました
負荷分散を実現するには
IRule を定義することで負荷分散ルールを変更できます。

  • グローバル構成 (このようにして、order-service は他のサービスをランダムに呼び出します)
    グローバル構成
  • 単一サービス構成
    order-service の application.yml ファイルで、新しい構成を追加すると、ルールを変更することもできます。
user-service: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

飢えの負荷

リボンはデフォルトで遅延読み込みを採用しています。つまり、LoadBalanceClient は初めてアクセスされたときにのみ作成され、サービス リストがプルされ、リクエスト時間は非常に長くなります。
したがって开启饥饿加载、プロジェクトの開始時に LoadBalanceClient を作成して最初の訪問にかかる時間を短縮し、次の構成 (order-service の yaml 内) を通じてスターベーション ロードを有効にすることができます。

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: 
      - user-service  # 指定饥饿加载的服务名称

おすすめ

転載: blog.csdn.net/ImisLi/article/details/128728859