Spring Cloud は、Spring Boot に基づくマイクロサービス フレームワークです。Spring Cloud は Spring コミュニティに由来し、主に技術的な反復とメンテナンスのために Pivotal と Netflix によって提供されています。
マイクロサービスの人気に伴い、国内外の大手インターネット企業は、マイクロサービス アーキテクチャのさまざまなシナリオにおけるさまざまな問題に対するソリューションとオープンソース フレームワークを次々と共有してきました。
- サービスガバナンス: Alibaba のオープンソース Dubbo、Dangdang の拡張 DubboX、Netflix の Eureka、Apache の Consul など。
- 分散構成管理: Baidu の Disconf、Netflix の Archaius、360 の QConf、Ctrip の Apollo、Spring Cloud の Config など。
- バッチタスク: Dangdang の Elastic-Job、LinkedIn の Azkaban、Spring Cloud のタスクなど。
- サービス追跡: JD.com の Hydra、Spring Cloud の Sleuth、Twitter の Zipkin など。
- ……
上記のマイクロサービス フレームワークまたはソリューションにはすべて、次の 2 つの特徴があります。
- 同じマイクロサービスの問題に対して、インターネット企業は異なる解決策を持っています。
- マイクロサービス フレームワークまたはソリューションは、マイクロサービス内の 1 つまたは複数の問題のみを解決できますが、他の問題については何もできません。
この場合、マイクロ分散マイクロサービスシステムを構築するには、これらの問題に対する多くの解決策の中から選択する必要があり、事前の調査、分析、実験に多くのエネルギーを費やす必要があります。
Spring Cloud は、分散マイクロサービス システムを構築するための「ファミリー バケット」として知られており、特定のテクノロジーではなく、一連のマイクロサービス ソリューションまたはフレームワークを順序立てて集めたものです。市場で成熟し実績のあるマイクロサービス フレームワークを統合し、Spring Boot のアイデアを通じてそれらを再パッケージ化し、複雑な構成と実装原則を保護および調整して、最終的に開発者にシンプルで理解しやすく簡単な一連のサービスを提供します。 -to-deploy および保守が容易な分散システム開発キット。
Spring Cloud には、spring-cloud-config や spring-cloud-bus などの 20 近くのサブプロジェクトが含まれており、サービス ガバナンス、サービス ゲートウェイ、インテリジェント ルーティング、負荷分散、サーキット ブレーカー、監視と追跡、分散メッセージ キュー、構成管理などを提供します。 .フィールドソリューション。
Spring Cloud はすぐに使えるフレームワークではなく、次の 2 世代の実装を備えたマイクロサービス仕様です。
- 第一世代の実装: Spring Cloud Netflix
- 第 2 世代の実装: Spring Cloud Alibaba
ここで紹介する Spring Cloud は、特に Spring Cloud の第 1 世代の実装を指します。
Spring Cloudの共通コンポーネント
Spring Cloud には、Spring Cloud Gateway、Spring Cloud Config、Spring Cloud Bus など、約 20 のサービス コンポーネントが含まれており、これらのコンポーネントは、サービス ガバナンス、サービス ゲートウェイ、インテリジェント ルーティング、負荷分散、ヒューズ、監視と追跡、分散メッセージ キュー、構成管理を提供します。他の分野のソリューションも。
Spring Cloud の共通コンポーネントを以下の表に示します。
Spring Cloud コンポーネント | 説明 |
---|---|
スプリングクラウド Netflix エウレカ | Spring Cloud Netflix のサービス ガバナンス コンポーネントには、サービス レジストリ、サービス登録、および検出メカニズムの実装が含まれます。 |
Spring Cloud Netflix リボン | Spring Cloud Netflix のサービス呼び出しとクライアント負荷分散コンポーネント。 |
スプリングクラウド Netflix ハイストリックス | 「Brother Porcupine」として知られる Spring Cloud Netflix のフォールトトレラント管理コンポーネントは、サービスの遅延や障害に対する強力なフォールト トレランスを提供します。 |
Spring Cloud Netflix のふり | リボンと Hystrix に基づく宣言型サービス呼び出しコンポーネント。 |
スプリング クラウド Netflix ズール | Spring Cloud Netflix のゲートウェイ コンポーネントは、インテリジェントなルーティングやアクセス フィルタリングなどの機能を提供します。 |
Spring クラウド ゲートウェイ | Spring 5.0、Spring Boot 2.0、Project Reactor などの技術に基づいて開発されたゲートウェイ フレームワークで、フィルター チェーンを使用して、セキュリティ、監視/インジケーター、電流制限などのゲートウェイの基本機能を提供します。 |
春のクラウド構成 | Spring Cloud の構成管理ツールは、構成コンテンツを保存するための Git の使用をサポートし、アプリケーション構成の外部ストレージを実現し、クライアント側で構成の更新、暗号化、復号化などの操作をサポートします。 |
春のクラウドバス | Spring Cloud のイベントおよびメッセージ バスは主に、クラスター内のイベントまたは状態の変更を伝播し、動的リフレッシュ構成などの後続の処理をトリガーするために使用されます。 |
春の雲の流れ | Spring Cloudのメッセージミドルウェアコンポーネントは、Apache KafkaやRabbitMQなどのメッセージミドルウェアを統合し、バインダーを中間層として定義することでアプリケーションとメッセージミドルウェアの分離を完全に実現します。統合された Channel チャネルをアプリケーションに公開することにより、アプリケーションはさまざまなメッセージ ミドルウェアの実装を考慮することなく、メッセージを簡単に送受信できるようになります。 |
春の雲の探偵 | Spring Cloud 分散リンク追跡コンポーネントは、Twitter の Zipkin を完全に統合できます。 |
注: Netflix は米国のオンライン動画 Web サイトであり、大規模な実稼働レベルのマイクロサービスの優れた実践者であり、マイクロサービス業界のリーダーとして認められています。Netflix のオープンソース コンポーネントは、大規模な分散マイクロサービス環境の実稼働環境で長年にわたって実証されており、成熟していて信頼性があります。
Spring Boot と Spring Cloud の違いと関係
Spring Boot と Spring Cloud はどちらも Spring ファミリーのメンバーであり、どちらもマイクロサービス開発において非常に重要な役割を果たしますが、両者の間には相違点と関連性があります。
1. Spring Boot と Spring Cloud の役割分担は異なります
Spring Boot は Spring ベースの高速開発フレームワークであり、開発者が Web プロジェクトを迅速に構築できるようにします。マイクロサービス開発では、Spring Boot は単一のマイクロサービスを迅速かつ簡単に開発することに重点を置いています。
Spring Cloud は、マイクロサービス アーキテクチャによるワンストップ ソリューションです。Spring Cloud は、グローバル マイクロサービスの調整とガバナンスに焦点を当てています。言い換えれば、Spring Cloud はマイクロサービスの大きな管理者に相当し、Spring Boot によって開発されたマイクロサービスを管理し、構成管理、サービス検出、サーキット ブレーカー、ルーティング、マイクロ エージェント、イベント バス、意思決定を提供します。 -キャンペーンの作成や分散セッションなどのサービス。
2. Spring CloudはSpring Bootに基づいて実装されています
Spring CloudはSpring Bootをベースに実装されています。Spring Boot と同様に、Spring Cloud も一連のスターターを提供します。これは、Spring Boot のアイデアを使用して Spring Cloud がさまざまなマイクロサービス フレームワークを再パッケージ化した製品です。これらは、これらのマイクロサービス フレームワークの複雑な構成と実装の原則を保護し、開発者が Spring Cloud を迅速かつ簡単に使用して分散マイクロサービス システムを構築できるようにします。
3. Spring Boot と Spring Cloud では依存関係の数が異なります
Spring Boot は、Spring Boot プロジェクトの構築に必要な依存関係が少ない軽量フレームワークです。
Spring Cloud は一連のマイクロサービス フレームワーク テクノロジのコレクションであり、それぞれに独立した依存関係 (Starter POM) が必要であるため、Spring Cloud プロジェクトの完全なセットを構築するには、多くの場合、多数の依存関係が必要になります。
4. Spring Cloud は Spring Boot から独立して実行できません
Spring Boot は、Spring Cloud なしで独立して実行できるプロジェクトまたはモジュールを直接作成できます。
Spring Cloud は Spring Boot に基づいて実装されているため、プロジェクトやモジュールを独立して作成することはできず、ましてや Spring Boot から独立して実行することもできません。
注: Spring Boot は単一のマイクロサービスの開発に使用できますが、マイクロサービスを管理および調整する機能がないため、マイクロサービス フレームワークではなく、マイクロサービスの高速開発フレームワークとしてのみ見なすことができます。
Spring Cloud バージョン
Spring Cloud には多くのサブプロジェクト (コンポーネント) が含まれており、それらは個別に更新および反復され、それぞれが独自のリリース バージョン番号を維持します。
Spring Cloud のバージョン番号とそのサブプロジェクトのバージョン番号との混同を避けるため、Spring Cloud では共通のデジタル バージョン番号を使用せず、次のようにバージョン情報を定義します。
{version.name} .{version.number}
Spring Cloudのバージョン情報は以下のとおりです。
- version.name : バージョン名。英国のロンドン地下鉄駅の駅名にちなんで命名され、Spring Cloud バージョンのリリース順序のアルファベット順 (つまり、A から Z) に対応します。たとえば、最初のバージョンは Angel、2 番目のバージョンは Angel で、最初のバージョンは Brixton (英国の地名)、次に Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton などと続きます。
- version.number : バージョン番号。Spring Cloud の各バージョンは、各バージョンの更新コンテンツが特定のレベルまで蓄積された場合、または重大なバグ修正が行われた場合に、SRX バージョンと呼ばれる「サービス リリース」バージョンをリリースします。X は増加する数字。たとえば、Hoxton.SR8 は、Hoxton の第 8 リリース バージョンを意味します。
Spring Cloud バージョンの選択
Spring Boot + Spring Cloud をマイクロサービス開発に使用する場合、プロジェクト内の Spring Boot のバージョンに応じて Spring Cloud のバージョンを決定する必要があります。そうしないと、予期しないエラーが多く発生します。
Spring Boot と Spring Cloud のバージョン対応は以下のとおりです(参考)Spring Cloud公式ウェブサイト)。
春の雲 | スプリングブーツ |
---|---|
2020.0.x (イルフォード) | 2.4.x、2.5.x (Spring Cloud 2020.0.3 以降) |
ホクストン | 2.2.x、2.3.x (Spring Cloud SR5 以降) |
グリニッジ | 2.1.x |
フィンチリー | 2.0.x |
エッジウェア | 1.5.x |
ダルストン | 1.5.x |
注: Spring Cloud は、Dalston、Edgware、Finchley、Greenwich のバージョンの更新を正式に停止しました。
上記の表に示したバージョン対応のほかに、ブラウザで https://start.spring.io/actuator/infoにアクセスすることで、Spring Cloud と Spring Boot のバージョン対応(JSON 版)を取得することもできます。
{
……
"bom-ranges":{
……
"spring-cloud":{
"Hoxton.SR12":"Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.4":"Spring Boot >=2.4.0.M1 and <2.5.6-SNAPSHOT",
"2020.0.5-SNAPSHOT":"Spring Boot >=2.5.6-SNAPSHOT and <2.6.0-M1",
"2021.0.0-M1":"Spring Boot >=2.6.0.M1 and <2.6.0-SNAPSHOT",
"2021.0.0-SNAPSHOT":"Spring Boot >=2.6.0-SNAPSHOT"
},
……
},
……
}
SpringCloud+RabbitMQ+Docker+Redis+Search+Distributed、システム詳細な SpringCloud マイクロサービス テクノロジー スタック コース