序文
上ではマイクロサービスのナコスJavaの新世代導入されているマイクロサービスフレームワークナコスとサービスの登録と発見におけるその機能、本稿ではそのほかの強力な機能に焦点を当てる:構成管理を、ナコスが一元管理を通じて達成に使用する方法を学びますリアルタイムの更新を達成し、維持するために、分散サービスのインタフェース、集中管理の構成。
この記事では、以下に関します。
- ナコス構成管理の概念
- どのようにナコス管理設定
- ナコスマルチ環境の構成管理
はじめにナコス構成管理
ナコスは、私たちはその構成管理がより効率的かつ高速になるように、サービスアプリケーションは、リアルタイムに設定することができます変更することができ、動的構成サービスを提供しています。これは、アプリケーション構成、およびキー/値に基づいて、他のメタデータ情報を格納する、分散型として構成されている外部支援システムのサーバとクライアントが提供されます。
まず、構成管理モジュールでナコスの下にいくつかの重要な概念を理解し、私たちはより良いナコス構成管理を理解し、正しく使用することができます。
-
名前空間(名前空間)
粒子サイズを設定するためのテナントを単離すること、そのような資源開発試験および単離(例えば、構成サービスなど)本番環境としての構成の異なる環境、に分離するために使用することができます。
-
CI(構成アイテム)
通常のフォームPARAMキー= PARAM値でそれらの値に固有の設定可能なパラメータ、。例えば、我々は、システムログの出力レベルを設定する(LOGLEVEL = INFO | WARN | ERROR)の構成項目です。
-
コンフィギュレーション設定(コンフィギュレーションセット)
関連または無関係なCIのコレクション。設定ファイルは、データ・ソース、スレッドプール、ログレベルと他の構成要素を含んでいてもよい、通常コンフィギュレーションセットです。
-
配置集 ID(Data ID)
組織分割システムのコンフィギュレーションセットのために使用されるコンフィギュレーションIDのセットを識別する。システムまたはアプリケーションは、コンフィギュレーションセットの複数を含んでもよいです。公式には、グローバル一意性を保証するために、データIDを定義した命名規則(例えばcom.taobao.tc.refund.log.levelなど)のJavaクラスのパッケージをお勧めします。
-
構成パケット(グループ)
コンフィギュレーション・セット、同じ構成セットを区別するためのデータIDをグループ化。デフォルトDEFAULT_GROUP。構成パケット一般的なシナリオ:そのようなメッセージキューおよび構成database_urlトピックの構成と構成の同じタイプを使用して、異なるアプリケーションまたはコンポーネント。
ナコス構成管理を開始
ナコスの構成管理を使用するには、まずナコスは、特定の操作がで見つけることができます開始、サーバー上ナコスサーバ、およびクライアントアクセスを開始する必要がマイクロサービスのナコスJavaの新世代。
ナコスはナコスに、私たち最初の構成管理をサービス側を立ち上げた最も単純な構成で、新しいコンソールは、図示のように:
正常に保存され、リストの後、次のような外観は、レコードを作成し設定することができます。
アクションバーの各コンフィギュレーション・セットは表示を提供し、クリアランスの設定を変更するだけでなく、私たちがナコスを使う方法を案内する追加のサンプルコードを表示しているが、クライアント側で設定された構成を読んで、現在はJavaの、春ブーツ、春はサポートしていますクラウドは、他の言語版は、まだ完璧な言語です。
![画像-20190623142049041](ww3.sinaimg.cn/large/006tN ...統合的に基づいて、技術スタックの春
ナコス春
-
まず、依存春にプログラムを追加
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> <version>0.2.3-RC1</version> </dependency> 复制代码
最新バージョンでは、Mavenのリポジトリで利用可能でmvnrepository.comがで取得します。
-
追加
@EnableNacosConfig
ナコスSpring構成管理サービスを有効にするために注釈を。次の例では、我々は使用@NacosPropertySource
我々が以前に作成したコンフィギュレーション・セットをロードするためにノートを、自動リフレッシュ設定を指定します。 -
ナコスによって
@NacosValue
注釈設定項目と属性が結合します。
-
プログラムを起動した後、オープン
http://localhost:8080/config/hello
返します結果を得るためにhello,test
、それは成功を次のように設定を読んで意味します。 -
成功を読んだ後、私たちは、この設定項目の検証の下ナコス構成情報の動的なリフレッシュ特性を変更してみてください。、手動で変更ナコスコンソールで、が提供するAPIを使用して別のコマンドラインで直接修正を変更する方法は2つあります。
curl -X POST "http://127.0.0.1:8848/nacos/v1.0.1/cs/configs?dataId=com.one.learn.nacos.config&group=DEFAULT_GROUP&content=message=nacos-spring" 复制代码
-
再び訪問し
http://localhost:8080/config/hello
、内容に戻すには、この時hello,nacos-spring
、情報の変更を返すには、プログラムのことを示しているmessage
値が動的に更新されました。
ナコス春ブーツ
-
動的構成変更を追加することに依存します。
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.1</version> </dependency> 复制代码
注意:ここでのバージョンは0.2.x.RELEASEは、バージョン、春ブーツ2.xのバージョンに対応0.1.x.RELEASEは春ブーツ1.xのバージョンに対応します。
-
では
application.properties
アドレスナコスサーバーの設定:
nacos.config.server-addr=127.0.0.1:8848
复制代码
-
使用
@NacosPropertySource
負荷のdataId
ためにcom.one.learn.nacos.config
設定ソース、および自動更新をオンにします。 -
ナコス
@NacosValue
注釈プロパティ設定値、コンテンツとしてスプリングを統合するステップ。 -
オープンブートクラスは
http://localhost:8080/config/hello
結果を返す取得hello,nacos
、設定が正常に読み込まれたプログラムに記載されています。
ナコス春の雲
あなたは春のクラウドプログラムを使用している場合は、ナコスは、依存ライブラリが提供するspring-cloud-starter-alibaba-nacos-config
動的な構成を実現するために変更します。
-
依存性を追加します。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.9.0.RELEASE</version> </dependency> 复制代码
注:バージョン0.2.x.RELEASEは春ブーツ2.xのバージョンに対応し、バージョン0.1.x.RELEASEは春ブーツ1.xのバージョンに対応します。
-
では
bootstrap.properties
、次のように設定ナコスサーバアプリケーションの名前と住所、ナコス春クラウドで、dataId
デフォルトはspring.application.name
追加properties
ファイルの拡張子を、そう、コンフィギュレーションを読み取るために正しいことを、私たちはナコスを設定する必要がIDがされて設定com.one.learn.nacos.config
を調整com.one.learn.nacos.config.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=com.one.learn.nacos.config 复制代码
> bootstrap.yml - - > application.properties - bootstrap.properties続いロード順序春のブートコンフィギュレーションファイル、ためBootstrap.propertiesは、コンフィギュレーションナコス場所として、ここで使用さ > application.yml、 中
application
階層を有効にすることはできませんナコスを設定します。注意:ナコスにアクセスするには、ドメイン名の方法を使用している場合、
spring.cloud.nacos.config.server-addr
方法は設定する必要があります域名:port
。ドメイン名を使用していても、ポートを省略することはできません。例えば、ポート80でリッスンabc.com.nacos、などナコス名spring.cloud.nacos.config.server-addr=abc.com.nacos:80
。 -
ネイティブで春クラウドは指摘し
@RefreshScope
、自動的に構成を実現更新日: -
アクセスプログラムを実行し、
http://localhost:8080/config/hello
コンテンツが返されhello,nacos
、それは設定が成功を読んでいることを示しています。 -
ナコスコンソールは、設定項目が変更され
message=Nacos Spring Cloud
、再び訪問するhttp://localhost:8080/config/hello
と、内容を返しhello,Nacos Spring Cloud
プログラムに記述message
動的に更新されていた値。
ナコスマルチ環境の構成管理
ナコスは、上記基本構成の読み取りおよび更新を達成し、その後、私たちは、この機能は唯一の春クラウドで使用するためのものであることに注意することは、複数の環境を管理し、設定する方法ナコスを見て。
我々は2つの環境プログラムがあるとします。テストを、本番環境は、春のブートプログラムでは、application.propertiesのデフォルトの設定ファイルを設定するには、管理を必要とし、従来の方法は、対応する環境で複数の項目を格納し、春のプロファイル機能を使用することですコンフィギュレーションファイル、ファイル形式application-${env}-properties
、および必要性spring.profile.active
アプリケーションが起動先の環境を構成します。
ナコス構成は、主にデータIDを通ってナコススプリングクラウドに配置されたグループに一意に決定dataId
次のように完全な形式です。
${prefix}-${spring.profile.active}.${file-extension}
复制代码
-
prefix
デフォルトはspring.application.name
あなたにもアイテムを設定することができ、値spring.cloud.nacos.config.prefix
を設定します。 -
spring.profile.active
現在の環境が対応するプロファイルで、詳細はを参照することができ春のブートのドキュメント。注:spring.profile.activeが空である場合、対応するコネクタは - 形式{プレフィックス} {ファイル拡張子}に、データIDスプライシングが存在しないであろう。
-
file-exetension
コンテンツのデータ形式を設定するには、コンフィギュレーションを使用してすることができるspring.cloud.nacos.config.file-extension
ように構成されてもよいです。現在サポートしているだけproperties
とyaml
種類。
デフォルトでは、グループはDEFAULT_GROUP
、次のことができspring.cloud.nacos.config.group
、指定した名前をカスタマイズします。
- 次のように、上記の構成規則に基づいて、我々はまず、ナコスコンソールに2つの異なる環境を設定し、新しい構成を作成することができます
2つの設定項目がに保存されているproperty
メモリのファイル形式。
#nacos-config-prod.properties
server.port=8091
message=nacos-config-prod
#nacos-config-test.properties
server.port=8081
message=nacos-config-test
复制代码
- その後、プログラムのメインの設定ファイルに
application.properties
以下のように設定されています。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=nacos-config
spring.cloud.nacos.config.file-extension=properties
spring.profile.active=test
复制代码
-
書き込まれたテストコントローラクラスConfigController、構成アイテムと結合するための属性値。
-
プログラムを起動し、あなたはポート・コンフィギュレーション・テスト環境が有効になっていることを示す、次のデータの結果を見ることができます。
その後、ブラウザを介してアクセスし
http://localhost:8081/config/hello
返すために、hello,nacos-config-test
。 -
設定ファイル変更
application.properties
ではspring.profile.active
、プログラムへのアクセスを再起動しますhttp://localhost:8091/config/hello
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=nacos-config spring.cloud.nacos.config.file-extension=properties spring.profile.active=prod 复制代码
得られた結果を返すことができ
hello,nacos-config-prod
、また別の構成のプログラム環境のハンドオーバーの成功を示しています。
リスナーの構成
外を有効にするアクティブなテスト構成に加えて、我々は、使用することは非常にシンプルな達成するために、リスナーを追加することにより、構成の変更を監視することができ@NacosConfigListener
ますをすることができ、変更された構成に対応する指定されたコンフィギュレーションセットのIDと、リスナーはコールバックを受け取ることになります、意志すべての構成情報は、文字列として返されます。
設定項目は、複数の構成コールバックは、ライン形式の文字列を受信したときに、独自のプロセスを必要とします。
もちろん、@NacosConfigListener
また、Propertiesオブジェクトを変換すると、変換タイプをサポートしています
名前空間のベストプラクティス
テナント粒度セグメントとして名前空間内ナコスは、マルチマルチテナント環境やデータ(解決するために主に存在するコンフィギュレーションおよびサービス)問題を特定します。
-
ナコス同様のマルチ環境の構成管理:つのみテナント(ユーザ)は、異なるnamespceは異なる環境に対応することができる場合、分離構成環境を達成するために、効果が単に部分です。
-
複数のテナントがある場合は、各テナント(ユーザー)の構成データと登録データは、独自の名前空間の下でサービスに帰属されるように、テナントごとに異なる名前空間を割り当てるには、マルチテナント構成データの分離を実現することができます。
注:各テナントが独自の構成を管理することができないように、ナコスはまだ、流通、隔離アカウントの権限を実装していない、この一つの機能はまだ計画しています。
簡単な紹介の後、その後、名前空間に関連するベストプラクティスを見て:
- 名前空間の値を取得する方法。
- 名前空間のパラメータの初期化方法。
名前空間を作成します。
参照するには、コンソールの左側にナコス機能では、名前空間の機能を、あなたは見るために上のクリックできる新しい名前空間のボタン、あなたがあなた自身の名前空間アップを作成することができ、この時間を。成功を作成した後、生成された名前空間のIDを、主に回避するために使用される名前空間名を表示されます、同じ名前の場合もあります。あなたが名前空間を指定するアプリケーションを設定する必要があるときに、名前空間のIDを記入。
関連するコマンドスペース
明示的に指定しない${spring.cloud.nacos.config.namespace}
設定で、デフォルトではナコス公開にこのnamespaeを使用することです。カスタム名前空間が必要な場合は、下記構成により達成することができます。
spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7
复制代码
この設定ファイルには、bootstrap.propertiesを配置する必要があります。さらに
spring.cloud.nacos.config.namespace
値は、ネームスペースIDに対応しています。
エピローグ
ここに来て、最後に来たナコス構成管理について学ぶためにここに来て、当然のことながら、構成管理と、より利用状況に、ナコス公式文書はまた、非常に詳細に説明し、それはまた、公式サイトへのより多くのアクセスすることができます。私は他の生態系のサービス春クラウドアリババマイクロコンポーネントの調査を綿密に従うことを続け、より多くの週、興味のあるパートナーが私の小さなマイクロチャネル公共数に集中することができます歓迎。
サンプルコード
サンプルプロジェクト:ナコス-アクション:github.com/wrcj12138aa ...
環境のサポート:
- JDK 8
- Mavenの3.6.0
- SpringBoot 2.1.0.RELEASE
- SpringCloud Greenwich.RELEASE
- SpringCloudAlibaba 0.9.0.RELEASE
参照
- Javaのマイクロサービスナコスの新世代:mp.weixin.qq.com/s/vS36glyNo ...
- ナコスコンセプト:nacos.io/zh-cn/docs / ...
- 春クラウドアリババ基本チュートリアル:マルチ環境管理のナコス構成:blog.didispace.com/spring-clou ...
- ナコス公式文書:nacos.io/zh-cn/docs / ...