SpringCloudプロジェクトの構築を教えます(4) Eurekaクラスタ版構築

マイクロサービスとは何ですか? シリーズが一目でわかる!

1. SpringCloudプロジェクトのビルド方法を教えます (1) 写真とテキストで詳しく説明、アホのような操作

2. SpringCloud プロジェクトの構築方法を教える (2) プロデューサーとコンシューマー

3. SpringCloudプロジェクトの構築方法を教えます (3) Eurekaサービス登録センターの統合

4. SpringCloudプロジェクトの構築方法を教えます (4) Eurekaクラスタのバージョン構築

5. SpringCloudプロジェクトのビルド方法を教えます (5) プロデューサークラスターバージョンをビルドします

6. SpringCloudプロジェクトの構築方法を教えます (6) Eurekaはサービスディスカバリを実現します

7. SpringCloudプロジェクトの構築方法を教える (7) Consulサービス登録センターを統合する

8. SpringCloudプロジェクトの構築方法を教えます (8) 統合リボンロードバランサ

9. SpringCloud プロジェクトの構築方法を説明します (9) OpenFeign サービス インターフェイス呼び出しの統合

10. SpringCloud プロジェクトの構築方法を教えます (10) Hystrix サービスのダウングレードの統合

11. SpringCloud プロジェクトの構築を教える (11) Hystrix のサービス ヒューズの統合

12. SpringCloud プロジェクトの構築方法を教える (12) Hystrix のグラフィカル ダッシュボードのリアルタイム モニタリングを統合する

13. SpringCloud プロジェクトの構築方法を教える (13) 新世代のゲートウェイを統合する

14. SpringCloudプロジェクトの構築方法を教えます (14) Integrated Config Distributed Configuration Center

15. SpringCloudプロジェクトの構築方法を教えます (15) Integrated Busメッセージバス

16. SpringCloud プロジェクトの構築方法を説明します (16) 統合された Stream メッセージ ドライバー

17. SpringCloud プロジェクトの構築方法を説明します (17) Sleuth 分散リンク追跡の統合

これからも更新していきますので、いいねやフォロー大歓迎です!
前回の記事では、単にEurekaスタンドアロン バージョンを構築しましたが、実際の運用環境では十分とは言えません。マイクロサービス RPC リモート サービス コールの核心は高可用性です。1 つの Eureka がダウンすると、サービス全体がダウンすることはできません。そのため、負荷分散とフォールト トレランスを実現するには、クラスターのバージョンが必要です。

参考までにcloud-eureka-server、新しいモジュールと区別できないcloud-eureka-server02ように、という名前を付けました。cloud-eureka-server具体的には、新しいモジュールの作成方法については、ここではスクリーンショットを掲載しません。新しいモジュールを作成するための具体的な手順については、最初の 2 つの記事を参照してください。

ここでは、pom ファイルを変更してコードを貼り付け始めます。注: 主なことは、eureka-server の依存関係を追加することです。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mcroservice</artifactId>
        <groupId>com.study.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloud-eureka-server02</artifactId>
    <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.study.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--boot web actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般通用配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
</project>

ここで、Eureka クラスターはマッピング構成を変更する必要があることに注意してください。C:\Windows\System32\drivers\etc次の図に示すように、パスの下にある hosts ファイルを見つけて、ファイルの最後に 2 つの Eureka マッピングを追加します。
ここに画像の説明を挿入

yml ファイルを構成するには、Eureka クラスターが他の Eureka を指す必要があります。たとえば、現在の 7001 は 7002 を指し、7002 は 7001 を指します。複数ある場合、閉ループの方向は、1 が 2 を指し、2 が 3 を指し、3 が 1 を指します。これを単に相互登録、相互監視ともいいます。

以下に示すように、Eureka ポート 7002 を含む yml ファイル:

server:
  port: 7002
eureka:
  instance:
    hostname: eureka7002.com #eureka服务端的实例名称
 
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #设置与eureka  server交互的地址和注册服务都需要依赖这个地址
      defaultZone: http://eureka7001.com:7001/eureka/  #集群就是指向其他的eureka

以下に示すように、Eureka ポート 7001 を含む yml ファイル:

server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #设置与eureka  server交互的地址和注册服务都需要依赖这个地址
      defaultZone: http://eureka7002.com:7002/eureka/   #集群就是指向其他的eureka

Main 起動クラス: Eureka のサーバー側であるため、このアノテーションを追加する必要があります@EnableEurekaServer

package com.buba.springcloud.eureka;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain02 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(EurekaMain02.class,args);
    }
}

次に、プロデューサーのサービス、つまりcloud-provide-paymentこのサービスを変更し、yml ファイルを変更して、サービスをこの Eureka に個別に挿入します。

defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
server:
  port: 8001 #服务端口
#spring相关配置
spring:
  application:
    name: mcroservice-payment  #服务名
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver  #数据库驱动包
    url: jdbc:mysql://localhost:3306/db01?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
    username: root
    password: root
#mybatis:配置
mybatis:
  mapperLocations: classpath:dao/*.xml
  type-aliases-package: com.buba.springcloud.pojo    # 所有pojo别名类所在包
#eureka配置
eureka:
  client:
    #表示是否将自己注册进eureka  默认为true
    register-with-eureka: true
    #是否从EurekaServer中抓取已有的注册信息,默认为true,单点无所谓,集群必须设置true才能和ribbon使用负载均衡
    fetch-registry: true
    service-url:
      #集群配置
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  instance:
    #服务名称修改
    instance-id: payment8001
    #访问路径可以显示ip地址
    prefer-ip-address: true

次に、最初に Eureka ポート 7001 でサービスを開始し、次に Eureka ポート 7002 でサービスを開始し、次にプロデューサー サービスを開始し、最後にコンシューマ サービスを開始する必要があります。

まず、Eureka ポート 7001 のサービスを確認し、プロデューサーとコンシューマーの両方が Eureka サービス センターに正常に登録されていることを確認します。以下に示すように:
ここに画像の説明を挿入

Eureka ポート 7002 のサービスを見て、プロデューサーとコンシューマーの両方が Eureka サービス センターに正常に登録されていることを確認します。以下に示すように:
ここに画像の説明を挿入

コンシューマ サービスに正常にアクセスできるかどうかをテストしてみましょう。以下に示すように、 「 」と入力するとhttp://localhost/consumer/payment/get/1、アクセスが成功します。
ここに画像の説明を挿入

Eureka のクラスター版が構築されました。難しそうに見えますが、やってみると簡単です。最初は難しく感じませんでしたが、覚えてみると非常に簡単であることがわかります。

ここに画像の説明を挿入

次の記事では、負荷分散を実現するためのプロデューサー クラスター サービスを構築します。引き続き注目して気に入ってください。引き続き更新していきます。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_39570655/article/details/131775415