springCloud は Nacos を構成センターおよび登録センターとして統合します

序文

この記事では、SpringCloud が構成センターおよび登録センターとして Nacos を使用し、簡単なデモを通じて Nacos の基本構成を学習し、RestTemplate と openfeign を通じて異なるマイクロサービス間のインターフェイス呼び出しを完了することを主に紹介します。

Nacos のインストール構成

Nacos の学習リソースには主に次の 2 つが含まれます

  1. ナコス パイプ ネットワークナコス パイプ ネットワーク
  2. ナコスGitHubナコスGitHub

ナコスをダウンロード

Nacos の対応するバージョンをGitHub https://github.com/alibaba/nacos/releasesから直接ダウンロードします。この記事では 2.1.0 を使用します。GitHub アクセラレーションがない場合は、CSDN から直接ダウンロードできます。アップロードしました、完全に無料、ポイント不要https://download.csdn.net/download/whzhaochao/88074308

ナオクスを開始する

startup.cmdWindows 変更の構成がset MODE="standalone"スタンドアロン モードとして構成されている場合は、 startup.cmd[実行] をクリックして Nacos を有効にするか、 を使用してstartup.sh -m standalone起動モードを指定します。

ここに画像の説明を挿入
8848 が表示されたら起動成功ですので、ブラウザにhttp://127.0.0.1:8848/nacos/、ユーザー名 nacos 、パスワード nacos と入力して Nacos にログインします。

nacosを設定する

ここに画像の説明を挿入
Nacos に入った後、簡単に説明する必要があるいくつかの概念があります。

名前空間

異なる環境として理解できます。たとえば、dev/test/prod は、development/test/official に対応します。これら 3 つの環境を別々に作成できます。ネームスペース ID に注意してください (未入力の場合は自動生成されます) ). 入力せずに自動生成させます。
ここに画像の説明を挿入

構成リスト

構成リストは、前のプロジェクトの yml またはプロパティ ファイルを置き換えるものです。開発環境を選択して、ユーザー サービスとして DataID を作成し、ショップとしてグループを作成します。ここで、DataID はマイクロサービスの 1 つに対応すると理解でき、グループ私たちのプロジェクトの一つとして理解していただければと思いますが、モールを作り、ユーザーセンターとオーダーセンターを作ります。ここで、モールプロジェクトはグループ、ユーザーセンターはデータIDとして理解できます。

ここに画像の説明を挿入

サービス管理

ここでのサービス管理はマイクロサービスの 1 つに対応します。マイクロサービスが開始されると、ここに自動的に登録されます。まだデータはありません。
ここに画像の説明を挿入

Spring Cloud環境構築

非常に単純なデモを作成します。基本的なロジックは、nacos 構成センターからユーザー構成を取得するユーザー センターを有効にし、ID を通じてユーザー情報を取得するインターフェイスを提供し、注文センターでインターフェイスを作成し、ユーザー センターのインターフェイス ユーザー情報を取得します。基本的なプロジェクト構造は次のとおりです。
ここに画像の説明を挿入
ここでは、注記付きで POM を参照します。 SpingBoot の異なるバージョンは、cloud-alibaba および nacos と互換性がない可能性があります。https://githubからダウンロードできます。 .com/spring-cloud- incubator/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 対応する互換性のあるバージョンを確認してください

    <properties>
        <spring-boot-start-web.version>2.3.11.RELEASE</spring-boot-start-web.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot-start-web.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

ユーザーセンターのbootstrap.yml設定

ここでは主に 2 つの主要な設定 nacos.config と nacos.discovery を見ていきます。config は主に nacos から設定情報を取得するように設定されています。ここで、プレフィックスは nacos バックグラウンド ユーザー サービスに適用され、名前空間は開発環境に対応し、グループはグループに対応します弊社プロジェクトショップに相当します。

server:
  port: 82
spring:
  profiles:
    active: dev
  application:
    name: user-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        group: shop
        enabled: true
        prefix: user-service
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        group: shop

依存関係の構成

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

このクラスを見てみましょうUserConfig。このクラスを通じて、nacos で構成された users.list データを取得できます。

@Configuration
@ConfigurationProperties("users")
@Data
public class UserConfig {
    
    
	private List<User> list;
}

このクラスは、ID を通じて nacos 構成センターのユーザー情報を取得するUserController方法を提供します。/user/{id}

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
    
    
    @Value("${server.port}")
    private Integer port;
    @Resource
    private UserConfig userConfig;
    @GetMapping("/{id}")
    public User info(@PathVariable Long id){
    
    
        return  userConfig.getList().stream().filter(x->x.getId().equals(id)).peek(x-> x.setPort(port)).findFirst().get();
    }
}

nacos-user プロジェクトを有効にします。nacos-user プロジェクトを開始すると、nacos のバックグラウンドで user-service が表示されます。ポートは 82 です。

ここに画像の説明を挿入

nacosに表示されるIP とポートhttp://192.168.1.103:82/user/1を通じて、nacosの構成情報を正常に取得できます。

ここに画像の説明を挿入

オーダーセンター

オーダーセンターの構成

server:
  port: 81

spring:
  profiles:
    active: dev
  application:
    name: order-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        group: shop
        enabled: true
        prefix: order-service
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        group: shop

依存関係の構成

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

注文センター、注文センターでは、ユーザー センターのインターフェイスを呼び出すことと、/order/{id}ユーザーセンターのインターフェイスを呼び出すことによって2 つのインターフェイスを作成しました。ここでは、構成に追加する必要があることに注意してください。そうしないと、インターフェイス アドレスが追加されません。ロード バランシングは、ユーザー サービスを通じて登録センターから対応するサービス アドレスを見つけます。restTempate/order/feign/{id}openFeignRestTemplate@LoadBalancedribonribon

@RestController
@RequestMapping("/order")
public class OrderController {
    
    
    @Resource
    private RestTemplate restTemplate;
    @Resource
    private UserFeign userFeign;
    @GetMapping("/{id}")
    public User info(@PathVariable Long id){
    
    
       return restTemplate.getForObject("http://user-service/user/".concat(id.toString()), User.class);
    }
    @GetMapping("/feign/{id}")
    public User feign(@PathVariable Long id){
    
    
        return userFeign.getUser(id);
    }
}
@Configuration
public class RestTempleteConfig {
    
    
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
    
    
        return new RestTemplate();
    }
}

@FeignClient(value = "user-service")
@Component
public interface UserFeign {
    
    
    @GetMapping("user/{id}")
    User getUser(@PathVariable Long id);
}

開始するnacos-orderと、nacos サービスの 1 つが表示されますorder-service。IP とポートを介して対応するインターフェイスにアクセスし、ユーザー センター サービスへの呼び出しを完了します。http://192.168.1.103:81/order/1
ここに画像の説明を挿入
と入力して、ユーザー センター インターフェイスを呼び出します。 restTempate 経由http : //192.168.1.103:81/order/feign/2を入力すると、openFeign 経由でユーザー センター インターフェイスが呼び出されます。

ここでは、ユーザー サービスの起動設定をコピーし、service.port2 つのユーザー サービスを上書きして起動します。
ここに画像の説明を挿入

画像.png

nacos バックグラウンド ユーザー サービスのインスタンスが 2 つあることがわかります。

画像.png
order-service が呼び出されると、負荷分散を実現するためにさまざまなユーザー サービスによって提供されます。

画像.png

やっと

この記事はnacos学習の入門書であり、その他のnacos関連コンテンツは後で学習します
プロジェクトのソース コード: https://gitee.com/whzhaochao/nacos-study

Supongo que te gusta

Origin blog.csdn.net/whzhaochao/article/details/131867282
Recomendado
Clasificación