分散システムでは、各プロジェクトに構成ファイルが散在しているため、中央に管理することが困難になります。または、構成が変更される前に再起動する必要があります。次に、Spring Cloud Configを使用して、この問題点を解きます。
構成サーバー
config-serverを構成サーバーとして使用し、依存関係を追加する必要があります。
<Dependency> groupId> org.springframework.cloud </groupId> <artifactid> spring-cloud-config-server </artifactid> </dependency>
Application.ymlで、構成:
スプリング:name:name:config-server#name clude:config:server:git:uri:uri:file:// users/yangdd/documents/code/github/config-repo#localリポジトリ(テスト用)、フォーマット:file:// $ {user.home}/config-repoそれがウィンドウ、$ {user.home}/config-repo https://github.com/yangddd1205/spring-cloud-master/ #username:username#password:password#default-label:config#はコミットID、ブランチ名、タグ名、デフォルト値はマスター#検索パス:####4001##4001#-4001#portでの構成ファイルを検索することができます。春のプロジェクトには、一般に「慣習は構成よりも大きい」という原則があります。したがって、gitの構成ファイルは、通常、{application} - {profile} .ymlまたは{application} - {profile} .propertiesにちなんで命名されます。
config-repoのマスターブランチに2つのファイルclient-dev.ymlがあります。
情報:Master-dev
client-prod.yml:
情報:マスタープロッド
構成ブランチには、2つのファイルクライアントdev.ymlがあります。
情報:config-dev
client-prod.yml:
情報:config-prod
config-server次のマッピング関係を通じて、gitの構成ファイルにアクセスできます。
/{Application }/ {label} ]/ {application} - {profile }.yml/ {label }/ {application }- {application }- {profile }.yml/ {application }- {profile} .properties/ {label }/ {application.propertieshttp:// localhost:4001/client-dev.yml
構成クライアント
config-clientを構成クライアントとして使用し、依存関係を追加します。
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> <deplency> org.springframework.cloud </groupId> <artifactid> spring-cloud-starter-config </artifactid> depenting>
bootstrap.yml(bootstrap.ymlはapplication.ymlの前にロードされます)で構成します:
スプリング:アプリケーション:名前:クライアントクラウド:config:uri:uri:http:// localhost:4001/##は構成センタープロファイルのアドレスを表します:dev#はspring.profiles.active属性に相当しますが、優先度はspring.profiles.active#label:config#config#config#speciefied in the specifeed in the ciftificifed of apticifeatifed in the quirn fid in the quipr ast for especife
config-clientでtestcontrollerを作成します。
@RestControllerPublic Class TestController {@Value( "$ {INFO}")Private String Info; @RequestMapping(value = "/getInfo")public string getInfo(){return this.info; }}http:// localhost:4002/getInfoにアクセスしてください
Config-Client Configurationファイルのプロファイルを変更してプロデュースしてアクセスして結果を表示します。
これで、構成ファイルを統一された方法で管理するように実装しましたが、構成ファイルを変更した後、どのように再起動して有効にできないのでしょうか?
config-clientで依存関係を紹介します。
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-actuator </artifactid> </dependency>
Annotation @RefreshScopeをダイナミックリフレッシュが必要なクラスに追加します。ここでは、TestControllerに追加します。構成ファイルでアクチュエーターの許可認証を無効にします。
管理:セキュリティ:有効:false
プロジェクトを再起動、http:// localhost:4002/getInfo結果は次のとおりです。
情報:config-dev-1.0
アクチュエータメソッドを呼び出し、手動で更新します。 http:// localhost:4002/更新注:投稿方法である必要があります。変更とは何かを確認できます。
[ "情報"]
http:// localhost:4002/getInfoに再びアクセスしてください。結果は次のとおりです。
構成は動的に更新できますが、更新方法は毎回手動で呼び出さなければならないことがわかりました。 1,000のサービスがある場合は、1,000回呼び出す必要があります。より良い方法はありますか?つまり、Spring Cloud Busと組み合わせて使用します。
高度に利用可能
これで、Config Serverはシングルポイントサービスになり、後者の構成クライアントがハングアップすると、使用されません。したがって、世代では、構成サーバーは非常に利用可能でなければならないので、どうすればよいですか?とても簡単です。前述のeurekaの高可用性と同様に、さらにいくつかの構成サーバーを展開する必要があります。
プロジェクトEurekaをポート:7001の登録センターとして使用しています。
config-serverをconfig-server-1にコピーし、ポート:4003を使用し、両方の構成サーバーをレジストリセンターに登録します。
config-clientをレジストリに登録し、eurekaから構成サーバーを取得するように指定します。
スプリング:クラウド:config:#uri:http:// localhost:4001/##は構成センターのアドレスを表し、構成サーバーアドレスプロファイルを直接指定します:dev#label:config discovery:enabled:enable enable enable enable enable config service-id:config-server#config server service name name name name
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。