Java の SpringCloud Alibaba [3] [マイクロサービス Nacos-config 構成センター]

1. Nacos-config 構成センター

1. 公的書類

Nacos は、構成およびその他のメタデータを保存するためのキー/値ストレージを提供し、分散システムの外部化された構成に対するサーバー側およびクライアント側のサポートを提供します。
Spring Cloud Alibaba Nacos Confg を使用すると、 Nacos Server で Spring Cloud アプリケーションの外部プロパティ構成を一元管理できます。
1. 保守性 2. 適時性 3. セキュリティ
ここに画像の説明を挿入
Springcloud 構成の
3 つの主要な利点を比較します

  • springcloud config のほとんどのアプリケーション シナリオは git と組み合わせて使用​​され、動的変更もクライアントのすべての変更を渡すために Spring Cloud Bus メッセージ バスに依存する必要があります。
  • springcloud config はほとんどのシナリオで GIT によって使用され、動的変更には SpringCloud Bus メッセージ バスがすべてのクライアント変更を通過する必要もあります
  • nacos config は構成を更新するためにロング ポーリングを使用します。構成が変更されると、プロバイダーに通知するプロセスは非常に高速になり、速度の点で springcloud の元の構成が数ブロック失われます。
    ここに画像の説明を挿入

2. クイック設定

アクセス: http://192.168.180.128:8847/nacos/index.html#/login

1. Nacos-configの基本操作

新しい構成

ここに画像の説明を挿入
ここに画像の説明を挿入
クリックして公開
ここに画像の説明を挿入
ここに画像の説明を挿入

構成の編集
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

変更履歴情報の表示

ここに画像の説明を挿入
詳細を確認する

ここに画像の説明を挿入
ここに画像の説明を挿入
詳細やロールバックなどの操作

ここに画像の説明を挿入

リッスンクエリ

ここに画像の説明を挿入

新しい名前空間を作成する

ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

構成ファイルの他の名前空間へのクローン作成
ここに画像の説明を挿入
ここに画像の説明を挿入
ユーザー管理とロール管理
ここに画像の説明を挿入
ユーザーの
ここに画像の説明を挿入
ここに画像の説明を挿入
追加 ロールの追加
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
権利管理
ここに画像の説明を挿入
ここに画像の説明を挿入
ログアウト システムを設定します
ここに画像の説明を挿入

ここに画像の説明を挿入

2. Nacos 構成センターの使用

Nacosサーバーの初期化
1. Nacosサーバーを起動します 起動方法はNacos公式サイトに記載されています
2. Nacos起動後、Nacosに以下の設定を追加します

データID:nacos-config.properties
グループ:DEFAULT_GROUP
設定形式:Properties
設定内容:
user.name = Xu Shu2
user.age = 11
ここに画像の説明を挿入
注 dataid はプロパティの拡張子 (デフォルトのファイル拡張子方法) であることに注意してください。

クライアントの使用方法
プロジェクトで Nacos を使用してアプリケーションの外部構成を実現する場合は、グループ ID が com.alibaba.cloud、アートファクト ID が spring-cloud-starter-alibaba-nacos-config であるスターターを使用します。

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

これで、標準の SpringBoot アプリケーションを作成できるようになりました
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入


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

ここに画像の説明を挿入
ここに画像の説明を挿入

server:
  port: 8050
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Nacos config 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

ここに画像の説明を挿入

@SpringBootApplication
public class ConfigApplication {
    
    
    public static void main(String[] args) {
    
    
        ConfigurableApplicationContext applicationContext = SpringApplication.run(ConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("user name :"+userName +"; age: "+userAge);
    }
}

この例を実行する前に、bootstarp.properties 構成ファイルを使用して、Nacos サーバーのアドレスを構成する必要があります。
ここに画像の説明を挿入
ここに画像の説明を挿入

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      server-addr: 192.168.180.128:8847

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

3. Nacos クライアントは 10ms ごとに登録センターに行き、MD5 に従って判断します。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

4. dataid を yaml としたファイル拡張子方式に基づく

spring-cloud-starter-alibaba-nacos-config も yaml 形式を完全にサポートしています。現時点では、次の 2 つの手順を完了するだけで済みます。

1. アプリケーションの bootstrap.properties 構成ファイルに表示される、宣言された dataid ファイル拡張子。以下に示す
bootstrap.properties

spring.cloud.nacos.config.file-extension=yaml

ここに画像の説明を挿入
ここに画像の説明を挿入

user:
    name: 徐庶-yaml
    age: 11

ここに画像の説明を挿入
構成情報を取得できないことがわかりました。
ここに画像の説明を挿入
対応する構成情報を変更し、対応する読み取りファイル拡張子を設定する必要があります。
ここに画像の説明を挿入

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml

ここに画像の説明を挿入

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml
        #refresh-enabled: false nacos客户端将无法感知配置的变化

プロジェクトを再実行し
ここに画像の説明を挿入
、application.yml 設定ファイル
application-dev.yml を複数環境用に設定
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
します。上記で出力された設定情報のうち、ユーザー名は先ほどの設定情報ですが、年齢は古い設定情報のままです。
ここに画像の説明を挿入
名前空間を dev に設定します。
ここに画像の説明を挿入

        namespace: dev

ここに画像の説明を挿入
開発環境に構成情報を設定していないため、構成情報を読み取れないことがわかります
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

5. カスタムグループ構成のサポート

構成が明示的に指定されていない${spring.cloud.nacos.config.group}場合は、デフォルトが使用されますDEFAULT_GROUP独自のグループをカスタマイズする必要がある場合は、次の構成を通じて実行できます。

spring.cloud.nacos.config.group=DEVELOP_GROUP

ここに画像の説明を挿入
ここに画像の説明を挿入

        group: itbluebox

対応する情報を読み取ることができません。
ここに画像の説明を挿入
グループを複製して設定すると、
ここに画像の説明を挿入
ここに画像の説明を挿入
引き続き対応する構成情報を読み取ることができます
ここに画像の説明を挿入

6. カスタム拡張データ ID 構成をサポート

Spring Cloud Alibaba Nacos Config は、バージョン 0.2.1 からカスタム Data ld 構成をサポートできます。この部分の詳細な設計については、こちらを参照してください。完全な構成例は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

String userConfig = applicationContext.getEnvironment().getProperty("user.config");
            System.out.println("user name :"+userName +"; age: "+userAge + "; userConfig:"+userConfig);

ここに画像の説明を挿入

group: itbluebox
        shared-configs:
          - data-id: com.itblueboxmall.common.properties
            refresh: true

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

            #group:默认是Default-group
          - data-id: com.itblueboxmall.common2.properties
            refresh: true

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

            #group:默认是Default-group
        extension-configs[0]:
          data-id: com.itblueboxmall.common03.properties
          refresh: true

ここに画像の説明を挿入

7. @RefreshScope [構成変更に応じて動的認識を設定]

@Value アノテーションは構成センターの値を取得できますが、変更された値を動的に認識することはできません。@RefreshScope アノテーションを使用する必要があります。

ここに画像の説明を挿入
ここに画像の説明を挿入

@RestController
@RequestMapping("/config")
public class ConfigController {
    
    

    @Value("${user.name}")
    public String username;

    @RequestMapping("/show")
    public String show(){
    
    
        return this.username;
    }
}

ここに画像の説明を挿入
ここに画像の説明を挿入

http://localhost:8050/config/show
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
コンソールによって出力されるコンテンツが変更されました。
ここに画像の説明を挿入
対応するインターフェイスに再度アクセスしても変化しません
http://localhost:8050/config/show
ここに画像の説明を挿入
設定の動的認識に対応する設定の変更
ここに画像の説明を挿入

@RefreshScope

実行中のプロジェクトを再起動し
ここに画像の説明を挿入
、構成情報を変更すると、
ここに画像の説明を挿入
ここに画像の説明を挿入
コンソールの出力内容が変更されます。http ://localhost:8050/config/show に
ここに画像の説明を挿入
アクセスしてください。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44757034/article/details/131527250