この記事では、Nacos を構成センターとして使用する場合の共有構成の読み取り方法を紹介します。
私の環境
- ウィンドウズ10
- JDK8
- SpringCloud:Finchley.RELEASE
- SpringBoot:2.0.4.RELEASE
- spring-cloud-alibaba-dependencies:0.2.2.RELEASE
- Nacos サーバー:1.0.1
この記事のプロジェクト Demo は、前回の記事の集計プロジェクトを引き続き使用しますNacos
. 以前の環境がない場合は、ソース コードのアドレスからダウンロードできます。
シーンの説明
プロジェクト内のサービスの数が増えると、それに応じて構成ファイルが増加します. 複数の構成ファイルに同じ構成が存在することになります. その後、プロジェクト内の各サービスの共有構成ファイルとして同じ構成を分離できます. 各サービスは読み取ることができます. Nacos による共有構成
デモを使用して、実現可能かどうかを示しましょう
- デモ プロジェクト: nacos-config-share
- 構成ファイル: nacos-config-share.yml
- 共有構成ファイル: shareconfig1.yml、shareconfig2.yml
プロジェクトを作成
通常通り、集約プロジェクト Nacos の下にサブプロジェクトを作成しnacos-config-share
、その pom.xml ファイルは以前のプロジェクトと同じ依存関係にあります.以前のプロジェクトがない場合は、ソースコードのアドレスを参照できます
1. springboot 起動クラスを変更するNacosConfigShareApplication.java
@SpringBootApplication
@EnableDiscoveryClient
@RestController
@RefreshScope
public class NacosConfigShareApplication {
@SpringBootApplication
@EnableDiscoveryClient
@RestController
@RefreshScope
public class NacosConfigShareApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigShareApplication.class, args);
}
@Value("${nacos.share}")
private String share;
@Value("${share.config1}")
private String shareConfig1;
@Value("${share.config2}")
private String shareConfig2;
@RequestMapping("/getValue")
public String getValue() {
return share;
}
@RequestMapping("/getShare1")
public String getShare1() {
return shareConfig1;
}
@RequestMapping("/getShare2")
public String getShare2() {
return shareConfig2;
}
}
2. プロジェクトの構成ファイルを変更するbootstrap.yml
spring:
application:
name: nacos-config-share
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
prefix: ${spring.application.name}
file-extension: yml
shared-dataids: shareconfig1.yml,shareconfig2.yml
refreshable-dataids: shareconfig1.yml,shareconfig2.yml
shared-dataids
構成ファイルから、読み取り対象の共有構成ファイルが属性によって指定されDataID
、指定された共有構成ファイルを使用して複数のファイルが,
分離され、自動更新がサポートされていることがわかります。refreshable-dataids
新しい構成ファイル
ここでは、名前空間に参加せずにデモンストレーションとして使用し、パブリック スペースで直接作成およびテストします。
以下に説明するように、構成ファイルを作成しますnacos-config-share.yml
。
- データ ID:
nacos-config-share.yml
- 構成形式:
YAML
- 構成内容:
server: port: 9984 nacos: share: nacos-config-share
共有構成ファイル 1 を作成しますshareconfig1.yml
。詳細は次のとおりです。
- データ ID:
shareconfig1.yml
- 構成形式:
YAML
- 構成内容:
share: config1: 这里是共享配置文件1
共有構成ファイル 1 を作成しますshareconfig2.yml
。詳細は次のとおりです。
- データ ID:
shareconfig2.yml
- 構成形式:
YAML
- 構成内容:
share: config2: 这里是共享配置文件2
作成が成功すると、構成リストは次のようになります。
テストを開始
起動が成功した場合は、プロジェクトを直接開始します。ログには次の情報が表示されます。
スタートアップクラスで提供されるインターフェースにアクセスし、共有設定ファイルの値が取得できるかテストする
访问127.0.0.1:9984/getValue,返回:nacos-config-share
访问127.0.0.1:9984/getShare1,返回:这里是共享配置文件1
访问127.0.0.1:9984/getShare2,返回:这里是共享配置文件2
次に、refreshable-dataids
構成された自動更新が有効になるかどうかをテストします
Nacos コンソールで共有構成ファイルの値を変更しますshareconfig2.yml
。这里是共享配置文件2这里是共享配置文件2
編集して保存した後、再度 127.0.0.1:9984/getShare2 を要求し、返された結果を次のように観察します。
共有プロフィール 2 はこちら 共有プロフィール 2 はこちら
上記の返された結果は、構成ファイルでshared-dataids
および を指定することによりrefreshable-dataids
、共有構成ファイルを読み取り、自動的に更新できることを示しています。
要件の変更
今すぐ読み取り
shareconfig3.yml
とファイルを作成したいshareconfig4.yml
が、そのグループがSHARE3_GROUP
andであるSHARE4_GROUP
とします。つまり、共有構成ファイルがプロジェクト独自の構成ファイル ( ) と同じグループにない場合、上边的例子是全都在DEFAULT_GROUP分组
上記の方法を引き続き使用すると、共有構成ファイルを読み取ることができる
この時点で、別の構成を使用できますext-config
。これは、ユーザーがカスタマイズして、ロードする構成を指定できます。DataID、Group以及是否自动刷新
そして、複数の設定ファイルの指定をサポートするext-config
コレクション ( ) です。List
新しい共有プロファイルを作成する
最初に構成構成ファイルを作成しshareconfig3.yml
、shareconfig4.yml
それらのグループ属性に注意してください
- データ ID:
shareconfig3.yml
- グループ:
SHARE3_GROUP
- 構成形式:
YAML
- 構成内容:
share: config3: 这里是共享配置文件3,Group:SHARE3_GROUP
- データ ID:
shareconfig4.yml
- グループ:
SHARE4_GROUP
- 構成形式:
YAML
- 構成内容:
share: config4: 这里是共享配置文件4,Group:SHARE4_GROUP
次のように成功したページを作成します。
プロジェクト コードの変更
1.スタートアップ クラスNacosConfigShareApplication.java
に次のコードを追加します。
@Value("${share.config3}")
private String shareConfig3;
@Value("${share.config4}")
private String shareConfig4;
@RequestMapping("/getShare3")
public String getShare3() {
return shareConfig3;
}
@RequestMapping("/getShare4")
public String getShare4() {
return shareConfig4;
}
2. プロジェクト構成ファイルを変更して構成bootstrap.yml
を追加するext-config
spring:
application:
name: nacos-config-share
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
prefix: ${spring.application.name}
file-extension: yml
shared-dataids: shareconfig1.yml,shareconfig2.yml
refreshable-dataids: shareconfig1.yml,shareconfig2.yml
ext-config:
- data-id: shareconfig3.yml
group: SHARE3_GROUP
refresh: true
- data-id: shareconfig4.yml
group: SHARE4_GROUP
refresh: true
テストの開始
プロジェクトが変更された後、次のことがわかります。
- プロジェクト自体の nacos 構成ファイルは、デフォルトで読み取られる DEFAULT_GROUP に属します。
- shareconfig1.yml、shareconfig2.ymlはDEFAULT_GROUPに属し、
shared-dataids
指定して読み込む 非DEFAULT_GROUP
shareconfig3.yml と shareconfig4.yml は以下に属し、ext-config
カスタマイズして構成プロパティを読み取ることができます
プロジェクトを起動し、すべての構成ファイルが正常に読み取れるかどうかをテストします
访问127.0.0.1:9984/getValue,返回:nacos-config-share
访问127.0.0.1:9984/getShare1,返回:这里是共享配置文件1
访问127.0.0.1:9984/getShare2,返回:这里是共享配置文件2这里是共享配置文件2
访问127.0.0.1:9984/getShare3,返回:这里是共享配置文件3,Group:SHARE3_GROUP
访问127.0.0.1:9984/getShare4,返回:这里是共享配置文件4,Group:SHARE4_GROUP
変更されたshareconfig4.yml
構成内容は次のとおりです。这里是共享配置文件4,Group:SHARE4_GROUP,支持自动刷新
保存後、再度 127.0.0.1:9984/getShare4 を呼び出すと、次のように返されます。
共有構成ファイル 4、グループ: SHARE4_GROUP、自動更新をサポート
インターフェイスを呼び出した後、2 つの共有構成の読み込みメソッドを正常に読み取ることができ、一緒に使用できることがわかりました。ext-config
ユーザー定義の構成を実現する方法は、構成ファイルを共有します。
要約する
上記のデモでは、Nacos 共有構成の 2 つの実装を示しました. 2 つの方法は、異なるシナリオを対象としており、次のように要約されます:
shared-dataids
道:- 共有構成ファイルとプロジェクトのデフォルト構成ファイルが同じグループにある場合に適しており、2 つのコマンドで直接実行できます。
- メリット:設定が簡単
- 短所:同じグループ内のみ
ext-config
道:- これにより、開発者は共有構成ファイルの DataId、Group、および更新属性をカスタマイズして読み取ることができるようになり、
shared-dataids
既存の制限が解決されます。 - 利点:
shared-dataids
プログラム、ユーザー定義の構成と組み合わせて使用できます。強い柔軟性 - 短所: 構成がエラーを起こしやすく、YAML 構文に精通している
- これにより、開発者は共有構成ファイルの DataId、Group、および更新属性をカスタマイズして読み取ることができるようになり、
2 つの方法には独自の利点があることがわかります。したがって、開発中に共有構成を使用する必要がある場合は、特定の状況に応じて最適なソリューションを選択できます。
この記事のソースコード: https://github.com/larscheng/larscheng-learning-demo/tree/master/Nacos