Spring Cloud Eurekaのサービス登録とサービスディスカバリの詳細(追加 - ソースコード実装ケース - および実装ロジック図)

ユーレカ

この記事ではまず、Eurekaのアプリケーションシナリオとコード実装事例について説明し、Eurakaには複数のサービスモジュールが登録されており、サービス間の呼び出し実装については次の記事で説明します!

Eurekaコンポーネントはどのような機能を実現できますか

エウレカは主に次のことを行います。

  1. 注册发现中心
  2. 服务注册与发现的组件

CAP原則とは何ですか?

エウレカといえばCAPですが、CAP原則とは何なのか、一緒に見ていきましょう!
CAP 原则:CAP 定理とも呼ばれ、分散システムを指します。

CAP 原則の 3 つの特徴:
一致性 (Consistency):クラスターでは、3 台のマシンのデータは一貫しています。
可用性I(Availability):ノードがハングアップしても、クラスター全体は外部サービスを提供し続けることができます。
分区容错性 (Partition tolerance):計算機室のネットワークやパーティションなどの理由により、各マシン内のデータが一時的に不整合となる場合があります。
(この機能は避けられません) CAP 原則は、これら 3 つの要素が同時に達成できるのは最大 2 点までであり、3 つすべてに配慮することは不可能であることを意味します。

Eurekaそうは言っても、とZookeeper?の違いについて触れておきます。
Zookeeper:
CP 原則に従う
Eureka:
AP 原則: AP の高可用性に注意する

サービス登録コードの練習

全体的なコア実装図
ここに画像の説明を挿入

登録センターを構築する

次に、コードを通じて Eureka の使用を迅速に実現する方法を詳しく説明します。
ここに画像の説明を挿入
赤枠でマークしたプロジェクトのみをビルドする必要があり、他のプロジェクトはビルドする必要はありません。サービス登録センタークラスターは以前に作成したので、登録センターがいくつか存在します

まず、ディレクトリ構造を構築します。Maven プロジェクトは、
注意:新增项目的时候选择Java8
私の写真にあるものに従って構築されます。ここでは、新しいプロジェクトのプロセスを 1 つずつ説明しません。理解できない場合は、プライベート メッセージを送ってください。
最初のステップ
は、新しい登録センターを作成することです。201-eureka-server
ここに画像の説明を挿入
番目のステップは、スタートアップ クラスを
変更して注釈を追加することです。つまり、Eureka 登録センターを開くには、スタートアップ クラスで変更する必要があるローカル関数は 1 つだけです。ソースコードは次のとおりです。EurekaServerApplication@EnableEurekaServer添加开启Eureka注解

package com.powernode;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

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

}

3 番目のステップは、yml ファイル (設定ファイル) のソース コードを次のように
変更することです。各設定の意味について 1 つずつコメントを追加し、最初にそれを私流に変更します。

#单机
server:
    port: 8761 # eureka的默认端口
spring:
    application:
      name: eureka-server # 应用名称 不要使用特殊字符
eureka: #Eureka的配置分三类 server client 实例的  eureka-server既是服务端又是客户端
    server: #服务端每间隔多少毫秒定期删除的操作(默认是3000030秒))
      eviction-interval-timer-in-ms: 10000
      renewal-percent-threshold: 0.85 # 续约百分比 超过85的应用没有和你续约 那么erueka不会踢除任何应用
    instance: # 实例的配置
      instance-id: ${
    
    eureka.instance.hostname}:${
    
    spring.application.name}:${
    
    server.port}} # 主机名称 : 应用名称 : 端口号
#      hostname: localhost # 主机名称 或者 服务的IP
#      prefer-ip-address: true #以IP的形式显示具体的服务信息
#      lease-renewal-interval-in-seconds: 5 # 服务实例的续约的时间间隔

4 番目のステップ
は、 pom ファイルを変更すること
注意:です01-eureka-server的pom文件。これは、この部分で Spring Cloud バージョンと Spring Boot バージョンを指定する必要があるためです。
赤でマークしたボックスに従って変更します
ここに画像の説明を挿入
ここに画像の説明を挿入

サービスAのビルド

サービス A に対応するプロジェクト名は次のとおりです。02-eureka-client-a間違った場所を変更しないでください。
最初のステップ
は、まず yml 構成ファイルを変更することです。
ソースコードは以下の通りです。
各設定の意味を一つずつコメントを追加し、まずは自分流に変更していきます。

server:
  port: 8702 # 客户端端口没有要求
spring:
  application:
    name: eureka-client-a
# 注册 发送信息
eureka:
  client:
    service-url: # 指定注册地址
      defaultZone: http://localhost:8761/eureka
    register-with-eureka: true # 可以不往eureka-server注册
    fetch-registry: true # 应用是否去拉取服务列表到本地
    # 每个10秒中去注册中心重新进行拉取 时间越短脏毒越少 性能消耗大
    registry-fetch-interval-seconds: 10 # 为了缓解服务列表的脏毒问题
  instance:
    hostname: localhost # 应用的主机名称 最好谢主机ip
    instance-id: ${
    
    eureka.instance.hostname}:${
    
    spring.application.name}:${
    
    server.port}
    prefer-ip-address: true # 显示ip
    lease-renewal-interval-in-seconds: 10 # 实例续约的时间

2 番目のステップ
は、pom ファイルを変更し、図に従って変更することです。
1
ここに画像の説明を挿入

サービスBのビルド

サービス A に対応するプロジェクト名は次のとおりです。02-eureka-client-b間違った場所を変更しないでください。
サービス A と同様に、
最初のステップは
yml 構成ファイルを変更することです。
ソースコードは以下の通りです。
各設定の意味を一つずつコメントを追加し、まずは自分流に変更していきます。

server:
  port: 8703 # 客户端端口没有要求
spring:
  application:
    name: eureka-client-b
# 注册 发送信息
eureka:
  client:
    service-url: # 指定注册地址
      defaultZone: http://localhost:8761/eureka

2 番目のステップ
は、pom ファイルを変更し、図に従って変更することです。
ここに画像の説明を挿入
ここに画像の説明を挿入

サービスを開始する

レジストリを起動する

最初に登録センターを起動し01-eureka-server起動方法を開始します。起動ファイルをクリックし、緑色の三角形をクリックして実行モードまたはデバッグ モードを選択します。起動が服用A和服务B成功したことを示す下の図が表示され、リターンが表示されます。ステータスコードは204です。、ブラウザのアドレスバーに直接入力します。

ここに画像の説明を挿入

注意:重点来了非常重点http://localhost:8761/

ここに画像の説明を挿入
http://localhost:8761/入力後にこのページに戻った場合は、恭喜你Eureka注册中心启动成功!サービスの開始に進みます。
ここに画像の説明を挿入

サービスAを開始する

実行モードでもデバッグ モードでも、これが開始方法です。
ここに画像の説明を挿入
起動に成功すると下図のように表示され、ステータス表示は204となります。
ここに画像の説明を挿入
注意:重点来了非常重点、ブラウザのアドレス バーに直接入力するhttp://localhost:8761/か、このアドレスを開いたばかりで、F5 キーを直接押してページを更新します。
登録センターの上に、次のアプリケーション名をEUREKA-CLIENT-A持つサービスが登録されていることが明確にわかります。非常に良いので、サービス B の開始を続けます。
ここに画像の説明を挿入

サービスBを開始する

サービス B は依然としてサービス A と同じ方法で開始されています。現在、サービス A とサービス B の登録センターがあることがはっきりとわかります。三个服务正在运行同じ URL の下にあるブラウザに戻り、F5 キーを押して更新します。
ここに画像の説明を挿入
很好, サービス B も登録されていることがわかります。

ここに画像の説明を挿入

結論

ここまでで、登録センターと 2 つのサービス モジュールの登録機能の実現が完了しましたが、プライベート メッセージを理解していないブロガー向けに、私のプロジェクトの構築方法とコード実装方法によると、他のコンポーネントがあることがわかります。
は一般的に使用されていますSpring Cloud组件。2 番目の図には各コンポーネントのサービスもあります。nacosファイル構成センターの構築、手書きのゲートウェイ、ヒューズなどはすべてソース コードです。必要なブロガーは、無料でプライベート メッセージを送信できます。分からないことがあれば無料でお答えしますので、皆さんのお役に立てれば幸いです!
今回の共有はこれで終わり、次号ではうさぎを共有してリモート通話を実現します。
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/xiaohua616/article/details/132000558