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

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

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 分散リンク追跡の統合

これからも更新していきますので、いいねやフォロー大歓迎です!

1. 領事を理解する

この記事では、別のサービス レジストリである Consul について学びます。それでは、Consul とは何ですか?

Consul はサービス グリッド (マイクロサービス間の TCP/IP、ネットワーク呼び出し、電流制限、融合、サービス間の監視を担当) ソリューションであり、分散型の高可用性システムであり、開発と使用が非常に簡単です。フル機能のコントロール プレーンを提供します。主な機能は、サービス ディスカバリ、ヘルス チェック、キーと値のストレージ、安全なサービス通信、マルチデータ センターです。

他の分散型サービス登録および検出ソリューションと比較して、Consul のソリューションはより「ワンストップ」です。組み込みのサービス登録および検出フレームワーク、分散一貫性プロトコル実装、ヘルス チェック、キー/値ストレージ、マルチデータ センター ソリューションは不要です。他のツールに依存する必要があります。Consul 自体は Go 言語を使用して開発されており、クロスプラットフォームで効率的に動作するという特徴があり、Docker との併用も非常に便利です。

2. Consulのインストールと操作

クリックして Consul の公式 Web サイトにアクセスし、公式 Web サイトに入り、クリックしてダウンロードします。バージョンには 3 種類あり、ここでインストールした Windows バージョンです。ダウンロードは zip 圧縮パッケージです。解凍すると、Consul が表示されます.exe アプリケーション プログラム、以下に示すように:
ここに画像の説明を挿入

インストールする必要はありません。以下に示すように、アプリケーションのファイル アドレスが見つかります。
ここに画像の説明を挿入

次に、開いたフォルダーのアドレス バーに cmd を直接入力して、次のインターフェイスに入ります。

ここに画像の説明を挿入

以下に示すように、コマンド consul Agent -dev を入力して開発モードに入ります。

ここに画像の説明を挿入

以下に示すように、http://localhost:8500/ui/dc1/services アドレスにアクセスすると、Consul のホームページにアクセスできます。
ここに画像の説明を挿入

3. プロデューサーサービスを構築する

新しいモジュールを作成します。具体的な手順については前の記事を参照してください。構成ファイルからコードを貼り付け、pom、xml ファイルを変更して、主に consul の依存関係パッケージを追加します。

<?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-providerconsul-payment04</artifactId>
 
    <dependencies>
        <!--SpringCloud consul-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.study.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <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.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
</project>

新しい yml ファイル構成

server:
  # consul服务端口
  port: 8004
spring:
  application:
    name: cloud-provider-payment
  cloud:
    consul:
      # consul注册中心地址
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

新しいメインスタートアップクラス

package com.buba.springcloud;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain04 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(PaymentMain04.class,args);
    }
}

新しいテスト ビジネス クラスを作成する

package com.buba.springcloud.controller;
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@Slf4j
public class PaymentController {
    
    
    @Value("${server.port}")
    private String serverPort;
 
    @RequestMapping(value = "payment/consul")
    public String paymentConsul() {
    
    
        return "SpringCloud with consul:" + serverPort + "\t" + UUID.randomUUID().toString();
    }
 
}

まず Windows にインストールした Consul を起動し、次にモジュール プロジェクトを開始すると、cloud-provider-payment が Consul 登録センターに正常に登録されたことがわかります。
ここに画像の説明を挿入

次に、ビジネス インターフェイス http://localhost:8004/payment/consul にアクセスして、情報を取得できるかどうかを確認します。次の図に示すように、正常にアクセスできます。

ここに画像の説明を挿入

4. 消費者向けサービスを構築する

新しいモジュールを作成します。サービス名は pom.xml ファイルを変更し、主に consul の依存関係パッケージを追加します。以下に示すように:

<?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-consumerconsul-order</artifactId>
    <description>服务消费者之注册中心consul</description>
 
    <dependencies>
        <!--SpringCloud consul-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.study.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <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.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
 
</project>

以下に示すように、新しい yml ファイルを作成します。

server:
  port: 80
spring:
  application:
    name: cloud-consumer-order
  cloud:
    consul:
      # consul注册中心地址
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

以下に示すように、新しいメイン起動クラスを作成します。

package com.buba.springcloud.order;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 
@SpringBootApplication
@EnableDiscoveryClient
public class OrderconsulMain {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(OrderconsulMain.class,args);
    }
}

以下に示すように、新しい ApplicationContextConfig 構成ファイルを作成します。

package com.buba.springcloud.order.config;
 
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
 
@Configuration
public class ApplicationContextConfig {
    
    
    @Bean
    //RestTemplate 的负载均衡能力
    @LoadBalanced
    public RestTemplate getRestTemplate(){
    
    
        return new RestTemplate();
    }
}

以下に示すようにビジネス クラスを作成します。

package com.buba.springcloud.order.controller;
 
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
@RestController
@Slf4j
public class OrderConsulController {
    
    
    public static final  String PAYMENT_URL = "http://cloud-provider-payment";
    @Autowired
    private RestTemplate restTemplate;
 
    @GetMapping("/consumer/payment/consul")
    public String getPayment(){
    
    
        return restTemplate.getForObject(PAYMENT_URL+"/payment/consul/",String.class);
    }
}

次に、Consul サーバー、cloud-providerconsul-payment04 プロデューサー サービス、cloud-consumerconsul-order コンシューマー サービスをそれぞれ開始し、http://localhost/consumer/payment/consul にアクセスします。また、コンシューマーを通じてプロデューサーのサービスを呼び出し、取得することもできます。情報。成功したインターフェイスは次のとおりです。
ここに画像の説明を挿入

consul の簡単な統合が完了しました。とても簡単!!!

おすすめ

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