サービス登録コンポーネントは、高可用性クラスタを構築--Eureka

ユーレカは何ですか?

登録サービスコンポーネント:中ユーレカへのマイクロサービス登録。


なぜあなたはサービスレジストリが必要なのでしょうか?

「マイクロ」という言葉を強調したマイクロサービスの開発、マイクロサービスの大規模なアプリケーション、サービスを小さくすることはできません手段の数に分割。


リレーションシップには登録サービスがないと仮定すると、次のようになりますマイクロサービスとの関係を呼び出し、サービスコールの間に存在します:

1566142251076

マイクロサービスの展開は、同じサーバー上ではなく、長距離通話を通じても、その後、IPアドレスに来るかもしれません。理論的には、直接、直接通信のIPアドレスを使用して問題ありません。しかし、サービスの問題ならば、サーバーの展開を交換する必要は、IPアドレスを変更する必要があります。サービスは他のサービスの数に依存している場合や、各IPアドレスをリセットする必要があります。


右側には、対応するIPアドレスであるサービス・レジストリは、テーブル、テーブルの左側に書かれたサービス名の画像として理解することができます。IPアドレスの変更は、直接名とIPサービスレジストリとの間のマッピングを変更し、その後際に、IPアドレスを交換するサービスコールの名称を使用してください。その他のサービスには変更する必要がない、名前でリモート呼び出しによるものです。

1566142633779

ユーレカと飼育係の違い

ユーレカは、飼育係は、CPの原則を満たすために、APの原則を満たしています。

(CAP定理は、分散システムにおいて、一貫性(整合性)、アベイラビリティ(可用性)、パーティショントレランス(フォールトトレランスパーティション)は、二つの3つまで満たしていることを意味します)


ユーレカ3つの役割

ユーレカServerサービスの登録と発見

サービスの消費者が検索しているので、サービスプロバイダサービスプロバイダは、ユーレカにサービスを登録します

ユーレカから登録されたサービスのリストを取得するために、サービス消費者サービスコンシューマ、それによって消費者サービス


コンシューマとプロバイダ:消費と呼ばれる別のサービスを呼び出します。他のサービスを提供し、呼ばれています。

だから、同じサービスは、消費者側の両方を提供することができます。

[注]:関数のユーレカ隠れたIPアドレスは、マイクロサービスの内部全体に反映しました。


ユーレカクラスター構造


プロジェクトを作成します。

  • IDEA開いて、フォルダユーレカクラスターを作成します。

1566144926784


  • MSC-ユーレカ-6001、MSC-ユーレカ-6002、MSC-ユーレカ-6003 [プロジェクト] jdk1.8の作成、

1566145227822

1566145305544

1566145472114


輸入依存度のポンポン

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>

    <dependencies>
        <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-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


設定application.yaml

  • アドレスマッピングの設定

C:\ WINDOWS \ System32に\ドライバ\ etcに

1566147466705

1566147557267


MSC-ユーレカ-6001、

server:
  port: 6001

eureka:
  instance:
    hostname: eureka6001.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false      #false表示自己是注册中心,职责是维护服务,而不是调用服务
    service-url:
      defaultZone: http://eureka6003.com:6003/eureka/,http://eureka6002.com:6002/eureka/ # 注册到eureka6003和eureka6002里


MSC-ユーレカ-6002、

server:
  port: 6002

eureka:
  instance:
    hostname: eureka6002.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false      #false表示自己是注册中心,职责是维护服务,而不是调用服务
    service-url:
      defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6003.com:6003/eureka/


MSC-ユーレカ-6003

server:
  port: 6003

eureka:
  instance:
    hostname: eureka6003.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false   #false表示不向注册中心注册自己。
    fetch-registry: false      #false表示自己是注册中心,职责是维护服务,而不是调用服务
    service-url:
      defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/


マスター・ブート・クラスを作成し、注釈を追加@EnableEurekaServer

package zkrun.top;


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

@EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来
@SpringBootApplication
public class App_msc_eureka_6001
{
    public static void main(String[] args)
    {
        SpringApplication.run(App_msc_eureka_6001.class, args);
    }
}


ユーレカクラスターを開始します

1566148589864


いずれかのポートにアクセスし、他の2つはユーレカサービスが表示されます

1566148651864


高可用性の登録サービスのテストユーレカクラスタを作成します。

  • 新築MSC-プロバイダ-5001

  • 輸入依存度のポンポン

     <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
    <!--        Eureka客户端启动需要依赖web模块-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <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>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>


  • 設定application.yaml
server:
  port: 5001
spring:
  application:
    name: msc-provider  #应用名称
eureka:
  client:
    service-url:
      defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/,http://eureka6003.com:6003/eureka/
  instance:
    instance-id: msc-provider-5001
    prefer-ip-address: true     #访问路径可以显示IP地址


  • マスタークラス開始注釈@EnableEurekaClientを作成します。
package zkrun.top;


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

@SpringBootApplication
@EnableEurekaClient
public class App_msc_provider_5001
{
    public static void main(String[] args)
    {
        SpringApplication.run(App_msc_provider_5001.class, args);
    }
}

1566150379362


  • ユーレカクラスターの高可用性テスト

手動で、eureka6001を停止

1566150405399


eureka6001はアクセスできません。

1566150455835


6002と6003は、まだ登録サービスを提供します。

1566150489889

1566150527456



要約:

  • 三のユーレカと登録サービスは、独立したポンポン依存している彼の父の作品を、継承されません。春・ブート・スターター・ウェブに依存している登録サービス。将来の親ポンポンプロジェクトの設計では、各サブプロジェクトに依存するように考慮されるべきです。
  • ように同じレベルのサービスだけでなく、登録コンポーネント飼育係、領事とユーレカ。技術的なソフトウェア開発を決定するために選択した特定のアプリケーションシナリオおよびコンポーネントの利点は、に注意を払う必要があります。(ユーレカに加えて、同じレベルの他の成分も知っておく必要があります)



コードリファレンスます。https://github.com/HCJ-shadow/Eureka-Cluster

おすすめ

転載: www.cnblogs.com/noneplus/p/11374883.html