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 に
アクセスしてください。