springcloudAlibaba ---Nacos 構成センター

Nacos 構成センターの使用

Nacos は、構成やその他のメタデータを保存するためのキー/値ストアを提供し、分散システムの外部化された構成に対するサーバー側とクライアント側のサポートを提供します。Spring Cloud Alibaba Nacos Config を使用すると、Nacos Server で Spring Cloud アプリケーションの外部プロパティ構成を一元管理できます。
1. メンテナンス 2. 適時性 3. セキュリティ
Springcloud config の比較
3 つの主要な利点: springcloud config は、ほとんどのシナリオで git と組み合わせて使用​​されます. 動的変更も、クライアントのすべての変更を渡すためにSpring
Cloud Bus メッセージ バスに依存する必要があります
。構成を更新するためにロングポーリングを使用する
ビジュアルインターフェイス nacos config を提供します
。構成が変更されると、プロバイダーに通知するプロセスは非常に高速になり、元
の springcloud 構成よりも数ブロック速くなります。

nacos 構成センター

1. 構成の準備: nacos サーバーに新しい nacosconfig.properties 名前空間を作成します
: 開発環境、テスト環境、運用環境などのさまざまな環境を表します。
グループ: XX 医療プロジェクト、XX 電子商取引プロジェクトなど、特定のプロジェクトを表します。 DataId: 多くの場合、各プロジェクトの下に複数のプロジェクト (マイクロサービス) があり、各構成セット (DataId) が
プロジェクト (マイクロサービス) のメイン構成ファイルの
起動になります。 )権限、application.properties を変更
nacos.core.auth.enabled=true
2. nacos-config サービスを構築します

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更
1)引入依赖
1 <dependency>
2 <groupId>com.alibaba.cloud</groupId>
3 <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐config</artifactId>
4 </dependency>
2)添加bootstrap.properties
1 spring.application.name=nacos‐config
2 # 配置中心地址
3 spring.cloud.nacos.config.server‐addr=127.0.0.1:8848
4
5 # dataid 为 yaml 的文件扩展名配置方式
6 # `${
    
    spring.application.name}.${
    
    file‐extension:properties}`
7 spring.cloud.nacos.config.file‐extension=yaml
8 #profile粒度的配置 `${
    
    spring.application.name}‐${
    
    profile}.${
    
    file‐extension:properties}`
9 spring.profiles.active=prod
3) 启动服务,测试微服务是否使用配置中心的配置
1 @SpringBootApplication
2 public class NacosConfigApplication {
    
    
3
4 public static void main(String[] args) {
    
    
5  ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
6  String userName = applicationContext.getEnvironment().getProperty("common.name");
7  String userAge = applicationContext.getEnvironment().getProperty("common.age");
8  System.out.println("common name :"+userName+"; age: "+userAge);
9 }
10 }

1.3 構成関連の構成
Nacos データ モデル キーはトリプレットによって一意に決定され、名前空間のデフォルトは空の文字列、パブリック名前空間 (public)、グループのデフォルトは
DEFAULT_GROUPで
構成の動的な更新をサポートします。

1 @SpringBootApplication
2 public class NacosConfigApplication {
    
    
3
4 public static void main(String[] args) throws InterruptedException {
    
    
5  ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
6
7 while(true) {
    
    
8 //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
9  String userName = applicationContext.getEnvironment().getProperty("common.name");
10  String userAge = applicationContext.getEnvironment().getProperty("common.age");
11  System.err.println("common name :" + userName + "; age: " + userAge);
12  TimeUnit.SECONDS.sleep(1);
13 }
14
15 }
16
17 }
18

デフォルトの構成ファイルに加えて、プロファイル
の詳細な構成
springcloudstarteralibabanacosconfig をサポートするには、他の dataId にサフィックスを付ける必要があります。構成をロードするとき、dataid が spring. application. name. {spring.application.name} としてロードされるだけではありません
s pr in g . a pplic a t i o n . name . {file-extension:properties}はプレフィックスの基本構成であり、dataid はspring . application . name − {spring.application.name}です
。 -s p r in g . a pp l i c a t i o n . name {profile}.${file-extension:properties}の基本構成。日々の開発中に複数の環境で異なる構成が発生した場合は
、Spring が提供する ${spring.profiles.active} 構成アイテムを使用して構成できます。

spring.profiles.active=dev

プロファイルの構成ファイルがデフォルトの構成ファイルより大きくなっています。そして、補完的な ps を形成します。テナント単位の詳細な構成分離のためのカスタム名前空間の構成をサポート
するために、デフォルト構成ファイルのみが適用されます同じグループまたはデータ ID の構成は、異なる名前空間に存在できます。ネームスペースの一般的なシナリオの 1 つは、開発およびテスト環境と運用環境の間でのリソース (構成やサービスなど) の分離など、さまざまな環境における構成の区別と分離です。${spring.cloud.nacos.config.namespace} 構成を明示的に指定しない場合、Nacos の Public 名前空間がデフォルトで使用されます。カスタム名前空間を使用する必要がある場合は、次の構成を通じて実現できます。




 spring.cloud.nacos.config.namespace=71bb9785‐231f4eca‐b4dc‐6be446e12ff8

カスタム グループ構成のサポート
グループは組織構成の要素の 1 つです。構成セットを意味のある文字列 (購入または取引など) でグループ化し、
同じデータ ID を持つ構成セットを区別します。Nacos で構成を作成するときに、構成グループの名前が入力されていない場合、構成グループの名前はデフォルトで
DEFAULT_GROUP になります。
構成グループ化の一般的なシナリオ: 異なるアプリケーションまたはコンポーネントが、database_url 構成やMQ_topic 構成などの同じ構成タイプを使用します。
明示的な ${spring.cloud.nacos.config.group} 構成がない場合、デフォルトは DEFAULT_GROUP です。独自のグループをカスタマイズする必要がある場合は
、次の構成を通じて行うことができます。

spring.cloud.nacos.config.group=DEVELOP_GROUP

カスタム拡張をサポートするデータ ID 構成
データ ID は、組織部門構成のディメンションの 1 つです。データ ID は、システムを分割する構成セットを整理するためによく使用されます。システムまたはアプリケーションには複数の構成
セットを含めることができ、各構成セットは意味のある名前で識別できます。
データ ID は通常、グローバルな一意性を確保するために、Java に似たパッケージ (com.taabao.tc.refund.log.level など) の命名規則を使用します。この命名規則はオプションです。
拡張データ ID 構成をカスタマイズすることにより、複数のアプリケーション間での構成共有の問題を解決できるだけでなく、1 つのアプリケーションが複数の構成ファイルを持つこともサポートできます。

1 # 自定义 Data Id 的配置
2 #不同工程的通用配置 支持共享的 DataId
3 spring.cloud.nacos.config.sharedConfigs[0].data‐id= common.yaml
4 spring.cloud.nacos.config.sharedConfigs[0].group=REFRESH_GROUP
5 spring.cloud.nacos.config.sharedConfigs[0].refresh=true
6
7 # config external configuration
8 # 支持一个应用多个 DataId 的配置 一定要加扩展名
9 spring.cloud.nacos.config.extensionConfigs[0].data‐id=ext‐config‐common01.properties
10 spring.cloud.nacos.config.extensionConfigs[0].group=REFRESH_GROUP
11 spring.cloud.nacos.config.extensionConfigs[0].refresh=true
12
13 spring.cloud.nacos.config.extensionConfigs[1].data‐id=ext‐config‐common02.properties
14 spring.cloud.nacos.config.extensionConfigs[1].group=REFRESH_GROUP
15 spring.cloud.nacos.config.extensionConfigs[1].refresh=true

1.4 設定の優先順位
Spring Cloud Alibaba Nacos Config は現在、Nacos から関連する設定をプルするための 3 つの設定機能を提供しています。
A: spring.cloud.nacos.config.shared-configs を通じて複数の共有データ ID の設定をサポートします。
B: spring.cloud.nacos.config.ext-config[n].data-id ID 設定を通じて複数の拡張データをサポートします。
C : 内部関連ルール (アプリケーション名、アプリケーション名 + プロファイル) を通じて、関連するデータ ID 構成を自動的に生成します。3
つの方法を一緒に使用する場合、優先順位の関係は次のとおりです: A < B < C、優先順位は
高から低の順です。

  1. nacosconfigproduct.yaml の正確な構成
  2. nacosconfig.yaml 同じプロジェクト内の異なる環境に共通の設定
  3. extconfig: さまざまなプロジェクト拡張構成
  4. さまざまなプロジェクトのshareddataids共通構成

1.5 @RefreshScope
@Value アノテーションはコンフィグレーションセンターの値を取得できますが、変更された値を動的に感知することができないため、@RefreshScope アノテーションを使用する必要があります。

1 @RestController
2 @RefreshScope
3 public class TestController {
    
    
4
5  @Value("${common.age}")
6 private String age;
7
8  @GetMapping("/common")
9 public String hello() {
    
    
10 return age;
11 }
12
13 }

おすすめ

転載: blog.csdn.net/wangjunlei666/article/details/129877279