Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散構成センター [Dalston バージョン]

Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散構成センター [Dalston バージョン]

Spring Cloud Config は、分散システムのインフラストラクチャおよびマイクロサービス アプリケーションに集中的な外部構成サポートを提供するために Spring Cloud チームによって作成された新しいプロジェクトです。サーバー部分とクライアント部分の 2 つの部分に分かれています。サーバーは分散構成センターとも呼ばれます。これは、構成リポジトリに接続し、構成情報の取得や情報の暗号化/復号化などのアクセス インターフェイスをクライアントに提供する独立したマイクロサービス アプリケーションです。クライアントは、マイクロサービス アーキテクチャ内のマイクロサービス アプリケーションまたはインフラストラクチャです。指定された構成センターを通じてアプリケーション リソースとビジネス関連の構成コンテンツを管理し、起動時に構成センターから構成情報を取得して読み込みます。 Spring Cloud Config は、サーバーとクライアントの環境変数とプロパティ構成の抽象マッピングを実装しているため、Spring で構築されたアプリケーションに適しているだけでなく、他の言語で実行されるアプリケーションでも使用できます。 Spring Cloud Config で実装された構成センターは、デフォルトで Git を使用して構成情報を保存するため、Spring Cloud Config で構築された構成サーバーは、マイクロサービスアプリケーションの構成情報のバージョン管理を自然にサポートし、Git クライアントツールを通じて構成コンテンツを簡単に管理およびアクセスできます。もちろん、SVN リポジトリ、ローカライズされたファイル システムなど、他のストレージ方法もサポートしています。

[[237179]]

この記事では、Git ストレージに基づいて分散構成センターを構築し、クライアントを変換して、構成センターから構成情報を取得してコードにバインドできるようにする方法を学習します。

倉庫の設定を準備する

  • Code Cloud または Github で作成できる Git リポジトリを準備します。たとえば、この記事で用意されているウェアハウスの例: http://git.oschina.net/didispace/config-repo-demo
  • 構成センターを読み取るアプリケーションの名前が config-client であると仮定すると、git リポジトリ内のプロジェクトのデフォルトの構成ファイル config-client.yml を作成できます。
  1. 情報:
  2. プロファイル:デフォルト 

さまざまな環境の読み込み構成を示すために、git リポジトリに dev 環境用の別の構成ファイル config-client-dev.yml を作成できます。

  1. 情報:
  2. プロフィール: 開発者

ビルド構成センター

Spring Cloud Config を使用して分散構成センターを構築するのは非常に簡単で、必要な手順は 3 つだけです。

  • config-server-git という名前の基本的な Spring Boot プロジェクトを作成し、pom.xml に次の依存関係を導入します (parent と dependencyManagement の部分は省略します)。
  1. <依存関係>
  2. <依存関係>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-config-server</artifactId>
  5. </依存関係>
  6. </依存関係>
  • Spring Boot プログラムのメインクラスを作成し、@EnableConfigServer アノテーションを追加して、Spring Cloud Config のサーバー側機能を有効にします。
  1. @EnableConfigServer
  2. @SpringBootアプリケーション
  3. パブリッククラスアプリケーション{
  4.  
  5. 公共 静的void main(String[] args) {
  6. 新しい SpringApplicationBuilder(Application.class).web( true ).run(args);
  7. }
  8.  
  9. }
  • 構成サービスに関する基本情報と Git リポジトリの関連情報を application.yml に追加します。次に例を示します。
  1. 応用:
  2. 名前: config-server
  3. 雲:
  4. 設定:
  5. サーバ:
  6. git:
  7. uri: http://git.oschina.net/didispace/config-repo-demo/
  8. サーバ:
  9. ポート: 1201

この時点で、Spring Cloud Config を使用して Git で構成コンテンツを管理する分散構成センターが完成しました。まずアプリケーションを起動し、エラーが発生しないことを確認してから、次の操作を試してください。

Git リポジトリにアクセス許可が必要な場合は、次の 2 つのプロパティを構成することでこれを実現できます。

  • spring.cloud.config.server.git.username: Gitリポジトリにアクセスするためのユーザー名
  • spring.cloud.config.server.git.password: Gitリポジトリにアクセスするためのユーザーパスワード

これらの準備が完了すると、ブラウザ、POSTMAN、CURL などのツールを使用して構成コンテンツに直接アクセスできるようになります。設定情報にアクセスするための URL と設定ファイルのマッピング関係は次のとおりです。

  • /{アプリケーション}/{プロファイル}[/{ラベル}]
  • /{アプリケーション}-{プロファイル}.yml
  • /{ラベル}/{アプリケーション}-{プロファイル}.yml
  • /{アプリケーション}-{プロファイル}.properties
  • /{ラベル}/{アプリケーション}-{プロファイル}.properties

上記の URL は、{application}-{profile}.properties に対応する構成ファイルをマップします。ここで、{label} は Git 上のさまざまなブランチに対応し、デフォルトは master です。異なる構成コンテンツにアクセスするために、異なる URL を構築してみることができます。たとえば、config-client アプリケーションの開発環境であるマスター ブランチにアクセスするには、次の URL にアクセスします: http://localhost:1201/config-client/dev/master すると、次の応答が返されます。

  1. {
  2. 「名前」 : 「config-client」
  3. 「プロファイル」 : [
  4. 「開発」  
  5. ]、
  6. 「ラベル」 : 「マスター」
  7. "バージョン" : null
  8. 「状態」 : null
  9. 「プロパティソース」 : [
  10. {
  11. 「名前」 : 「http://git.oschina.net/didispace/config-repo-demo/config-client-dev.yml」
  12. "ソース" : {
  13. 「情報プロファイル」 : 「dev」  
  14. }
  15. },
  16. {
  17. 「名前」 : 「http://git.oschina.net/didispace/config-repo-demo/config-client.yml」
  18. "ソース" : {
  19. "info.profile" : "デフォルト"  
  20. }
  21. }
  22. ]
  23. }

Json は、アプリケーション名: config-client、環境名: dev、ブランチ名: master、およびデフォルト環境と dev 環境の構成内容を返すことがわかります。

クライアントの構築

上記の検証を完了し、構成サービスセンターが正常に動作していることを確認しました。それでは、マイクロサービス アプリケーションで上記の構成情報を取得してみます。

  • config-client という名前の Spring Boot アプリケーションを作成し、pom.xml に次の依存関係を導入します。
  1. <依存関係>
  2. <依存関係>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </依存関係>
  6. <依存関係>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-config</artifactId>
  9. </依存関係>
  10. </依存関係>
  • 次のようにして、Spring Boot アプリケーションのメイン クラスを作成します。
  1. @SpringBootアプリケーション
  2. パブリッククラスアプリケーション{
  3.  
  4. 公共 静的void main(String[] args) {
  5. 新しい SpringApplicationBuilder(Application.class).web( true ).run(args);
  6. }
  7.  
  8. }

構成ファイルを取得するための config-server-git の場所を指定する bootstrap.yml 構成を作成します。次に例を示します。

  1. 春:
  2. 応用:
  3. 名前: config-client
  4. 雲:
  5. 設定:
  6. URI: http://localhost:1201/
  7. プロファイル:デフォルト 
  8. レーベル: マスター
  9.  
  10. サーバ:
  11. ポート: 2001

上記の構成パラメータと Git に保存されている構成ファイルのさまざまな部分との対応関係は次のとおりです。

  • spring.application.name: 設定ファイルルールの{application}部分に対応します
  • spring.cloud.config.profile: 構成ファイルルールの{profile}部分に対応します
  • spring.cloud.config.label: 構成ファイルルールの{label}部分に対応します
  • spring.cloud.config.uri: 構成センターのconfig-serverのアドレス

config-server の設定情報が正しく読み込まれるように、上記のプロパティを bootstrap.properties で設定する必要があることに注意することが重要です。

上記のコードの記述が完了すると、読者は config-server-git と config-client の両方を起動し、http://localhost:2001/info にアクセスできます。このエンドポイントは、git リポジトリから取得した構成情報を返すことがわかります。

  1. {
  2. 「プロファイル」 : 「デフォルト」  
  3. }

さらに、config-client のプロファイルを dev に変更して、ロードされた構成の変更を観察することもできます。

コードサンプル

サンプルプロジェクトは、以前 CodeCloud と GitHub で作成された SpringCloud-Learning プロジェクトを使用し、再編成されます。異なるディレクトリによって Brixton と Dalston を区別する例。

具体的なプロジェクトの説明は次のとおりです。

  • Git リポジトリに基づく構成センター: config-server-git
  • 構成センターのクライアントを使用する: config-client

【この記事は51CTOコラムニスト「Zhai Yongchao」によるオリジナル記事です。転載の許可を得るには、51CTO を通じて著者に連絡してください。

この著者の他の記事を読むにはここをクリックしてください

<<:  分散seckillシステムの構築からWebSocketプッシュ通知についてお話ししましょう

>>:  マルチクラウド: 新しい監視キャッシュ

推薦する

1.4.3 アプリケーション(フロントコントローラ)(1)

1.4.3 アプリケーション(フロントコントローラ)(1)セクション 1.4.2 では、元の MVC...

Baidu アルゴリズムのアップデートでよくある問題と経験談

昨日、Baidu で突然短い検索エラーが発生しました。この問題に対して、Baidu の公式回答は「現...

業界のクラウドネイティブに焦点を当て、従来の企業の変革に画期的な進歩をもたらす

[[325027]] [51CTO.com からのオリジナル記事] 完全なクラウドコンピューティング...

ウェブマスターの皆さん、年末はキーワードの最適化に最適な時期ですので、お見逃しなく。

今日、偶然クライアントのサイトを検査したところ、非常に奇妙な現象が見つかりました。2ページ目と3ペー...

トラフィックの 90% は検索エンジンから来ているのに、なぜまだスパム サイトなのでしょうか?

Baidu で「ジャンクサイト」を検索すると、ジャンクサイトの 2 種類の結果が返されました。1 つ...

クラウド コンピューティングの後半: 勝者は誰か?

クラウドコンピューティングの前半がインターネット業界の戦いであったとすれば、後半は政府関係などの伝統...

クラウド コンピューティング データ センターのセキュリティ アーキテクチャの簡単な分析

データセンターを設立する目的は、データをより有効に活用、マイニングし、データから利益を引き出すことで...

Weiboマーケティングキャンペーンを計画する方法

この記事をご覧になった方は、きっとインターネットマーケティングに興味をお持ちのはずです。しかし、今、...

古いドメイン名を使用してウェブサイトを構築することの長所と短所の分析

ドメイン名は古いほど良いと聞いたことがありますが、なぜ良いのかは分かりませんでした。以前、友人とチャ...

インターネットが企業の新しいマーケティングモデルを変える:オンラインマーケティングの4つのステップ

インターネットは21世紀の代名詞です。今日、私たちの生活や仕事のパターンはインターネットによって変化...

海外のオンライン購入代理店が締め付け強化:加盟店は不安で撤退を希望

ナンドゥコミックス:チェン・ティン専門家は、購買代理店の数が膨大であると考えています。これまでの法律...

私たちは本当に SEO を理解しているのでしょうか?

SEO 最適化に関しては、業界のベテランであっても、この分野に参入したばかりの新人であっても、多かれ...

よくある URL の問題 3 つとその解決方法

SEO の問題は、コンテンツ、構造、リンクなどいくつかの理由で発生する可能性があります。ほとんどの人...

#11.11# IONcloud/krypt: 月額 11.1 ドル、2G メモリ/2 コア/60g SSD/3T/1Gbps 帯域幅、Win/Linux、ロサンゼルス/サンノゼ/シンガポール/ハワイ

krypt 傘下のクラウド サーバー ブランドである ioncloud は現在、継続割引 (更新時も...

クラウドサービス市場は活況を呈しており、多くの企業が市場シェア獲得に競い合っている。

最近、クラウドサービス市場が活況を呈しています。機関レポートによると、中国の企業向けクラウドサービス...