springcloudコレクション:www.tapme.top/blog/detail ...
I.はじめに
一般的なWebアプリケーションの開発では、我々は通常、たとえば、別の設定ファイルに設定項目を書きapplication.yml
、application.properties
が、各マイクロサービスは、設定ファイルを書き込みます場合マイクロサービスアーキテクチャでは、マイクロサービスの何百ものがあるかもしれません独自の設定ファイルには、管理者用設定ファイルにつながる非常に複雑です。したがって、集中構成管理は、各サービスは、集中リポジトリから必要な設定情報の読み出しを開始、非常に必要です。次のようにそのモデルは次のとおりです。
単純に次のようになります。
- 特定のプロファイルのコンテキストでそれを得るためにマイクロサービスインスタンス構成管理サービス要求を開始します
- 実際の構成情報は、リポジトリに存在します。ソース管理ファイル、リレーショナルデータベースまたはデータ・ストレージ・キーを:異なる実装があって、コンフィギュレーション・データを保存するように選択することができます
- 実用的なアプリケーションの構成管理とアプリケーションに依存しないデータ。設定の変更は、通常のパイプラインを構築し、展開することによって処理されます
- 構成管理は、変更した場合は、サービスインスタンス構成の使用を通知しなければなりません
このシリーズは、春の雲であるので、その使用Spring Cloud Config
構成管理を構築するために、そしてもちろん、他の多くの良いソリューションは(Etcd、ユーレカ、領事...)があります 。
第二に、コンフィギュレーション・サービスを構築
春の雲は、春ブーツ、春ブーツの基盤を構築するための必要性に基づいています。
1、ポンポン書き込み
POMに主に依存次の詳細には触れませ後、春のブートバージョンと春の雲のバージョンは以下の(メインのコンテンツスペースの都合に記載されている、githubのビュー上のコードを完了してください):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.4.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Camden.SR5</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
复制代码
図2に示すように、ガイド注釈クラス
ちょうど春のブートで起動するクラスを追加@EnableConfigServer
することができリアクション。
(ファイル・ストアを使用して)3、コンフィギュレーションサービスコンフィギュレーションの書き込み
ここでは、することですサービスを設定するポートを宣言するために使用される構成ファイルを使用して、およびその他の情報がないマイクロサービスの利用の他の構成に、カテゴリをレポジトリ。(ファイルストアの構成情報を使用して)次のように構成は次のとおりです。
server:
port: 8888
spring:
profiles:
# 使用文件系统来存储配置信息,需要设置为native
active: native
cloud:
config:
server:
native:
# 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表
searchLocations: file:///D:/configFolder/licensingservice
复制代码
4、アプリケーションで使用される設定ファイルを作成します
以上によりsearchLocations
ショー現在、私たちはlicensingserviceが対応するディレクトリに、次の3つの構成ファイルを作成すると呼ばれるアプリケーションを持っています:
- licensingservice.yml
server:
port: 10010
spring:
application:
name: licensingservice
复制代码
- licensingservice-dev.yml
server:
port: 10011
复制代码
- licensingservice-prod.yml
server:
port: 10012
复制代码
コンフィギュレーションファイルの命名規則は次のとおりです应用程序名称-环境名称.yml
。これでアプリケーションが設定されているhttpリクエストを介して取得することができます開始。
リクエストはlocalhost:8888 / licensingservice /デフォルトでは、次の結果を返します。
{
"name": "licensingservice",
"profiles": ["default"],
"label": null,
"version": null,
"state": null,
"propertySources": [
{
"name": "file:///D:/configFolder/licensingservice/licensingservice.yml",
"source": {
"server.port": 10001,
"spring.application.name": "licensingservice"
}
}
]
}
复制代码
リクエストはlocalhost:8888 / licensingservice / devが、次の結果を返します。
{
"name": "licensingservice",
"profiles": ["dev"],
"label": null,
"version": null,
"state": null,
"propertySources": [
{
"name": "file:///D:/configFolder/licensingservice/licensingservice-dev.yml",
"source": {
"server.port": 10011
}
},
{
"name": "file:///D:/configFolder/licensingservice/licensingservice.yml",
"source": {
"server.port": 10001,
"spring.application.name": "licensingservice"
}
}
]
}
复制代码
第二に、そして春ブートクライアント統合
そして、licensingserivceサービスを構築するために、このセクションを春の雲のconfigビルド構成サービスを使用する設定ファイルを取得するには、上記構成サービスを使用する方法を書きました。
1.プロジェクトspringbootを作成します。
springbootプロジェクトlicensingserviceの作成、主に、次の条件によって異なります。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
复制代码
2、設定ファイルを書きます
2つのプロファイルの合計application.yml
、bootstrap.yml
-
application.yml
このプロファイルは有効になりません、同じ名前が設定されている場合、ローカルでカバーされ、ローカルの構成情報にご滞在を格納するために使用されます
server: port: 10099 复制代码
-
bootstrap.yml
春の雲のconfigクライアント構成ファイルには、コンフィギュレーション・センターに係る構成に要求を読んで
spring: application: #指定名称,以便spring cloud config客户端知道查找哪个配置 name: licensingservice profiles: #指定环境(default,dev,prod) active: dev cloud: config: #指定config server地址 uri: http://localhost:8888 复制代码
PS:あなたが設定bootstrap.ymlを上書きしたい場合など、-dパラメータを指定してコマンドを起動することがあります。
java -Dsptring.cloud.config.uri=.... -Dspring.profiles.active=prod xxxxx.jar
3、スタート
リモートで有効に設定を読み込むことが示され、licensingserviceポートは10011で開始見つけることができます起動します。
Gitのソースとして第三に、サービス構成の使用は、データ
1.ソース・プロファイルを作成します。
など、githubのリポジトリにプロファイルを作成してgithub.com/FleyX/demo -...倉庫でspringcloud /設定プロファイルlicengingserviceサービスのディレクトリを作成します。
2、設定サーバーの設定ファイルを変更します
application.ymlでconfsvrを変更
server:
port: 8888
spring:
profiles:
# 使用文件系统来存储配置信息,需要设置为native,git设置为git
active: git
application:
name: test
cloud:
config:
server:
native:
# 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表
searchLocations: file:///D:/configFolder/licensingservice
git:
uri: https://github.com/FleyX/demo-project
# 查找配置文件路径(,分隔)
search-paths: springcloud/config/licensingservice
#如果为公开仓库,用户名密码可不填写
username:
password:
#配置git仓库的分支
label: master
复制代码
3、スタート
再起動し、設定が正常に有効になります見つけることができます。
第四に、コンフィギュレーション・リフレッシュ
春のクラウドサーバー構成を使用する場合、問題はときに、プロパティが動的に変化するアプリケーションをリフレッシュする方法でもあります。春のクラウド・コンフィギュレーション・サービスは常に財産の最新版を提供し、低レベルのストアプロパティへの変更は、最新の状態になります。しかし、設定クライアントは、設定の変更を知らない、それは自動的にプロパティをリフレッシュしません。
春ブーツアクチュエータが提供する@RefreshScope
アプリケーションの構成情報を再読み込みするプロパティを、開発者ができる/refresh
リフレッシュされます。注釈の注釈は、ブートエントリクラスが必要です。注意:このようなポート構成などのデータベースとしてのみロードカスタム春の属性は、再ロードされません。
概要
Benpianがちょうどマイクロサービスに関連する集中管理を設定するには、スプリング・クラウド-config設定を使用して、ではない、次はマイクロサービスを学習を開始します。Benpianコードは二つのプロジェクトに格納されます。ジャンプします