Spring Boot モノリシック アプリケーションの Spring Cloud Alibaba へのワンクリック アップグレード

作者:テンスリープ

バックグラウンド

Apache Dubbo、Nacos、Spring Cloud などのサービス フレームワークの人気に伴い、アプリケーションを構築するためにマイクロサービス アーキテクチャを採用する企業が増えています。マイクロサービス アーキテクチャにより、企業はアプリケーションを複数の小さなサービスに分割し、個別にデプロイおよびスケーリングできるようになります。また、このアーキテクチャ パターンにより、企業はアジャイル開発と継続的デリバリーの実装が容易になり、ビジネスの効率と応答性が向上します。

画像

マイクロサービスの 4 つの主要部分: 登録センター、サービス プロバイダー、サービス コンシューマ、サービス ガバナンス

現在、サービス プロバイダー、サービス コンシューマ、サービス登録センター、サービス ガバナンスなどのいくつかの主要なマイクロサービスの出現と成熟に伴い、マイクロサービス開発を使用して、迅速な開発を実現するだけでなく、マイクロサービスの効率性と安定性を追求します。

画像.png

モノリスかマイクロサービスか?

上の図から、ビジネス規模の拡大に伴い、モノリシック アーキテクチャとマイクロサービス アーキテクチャの選択傾向が交差していることがわかります。交差点の次はマイクロサービス アーキテクチャを選択しますが、ビジネス規模が大きくなるほど、マイクロサービス アーキテクチャによる効率化の効果をより享受できます。この交差点が左に移動し続けていることがわかります。デジタル化プロセスの急速な発展により、一般的に企業の IT システムはより複雑になっています。オープン ソースとクラウド コンピューティングによって促進された技術標準化により、マイクロサービス アーキテクチャの技術的敷居は大幅に低下しています。小規模企業でも、クラウド上のマイクロサービスをうまく活用できます。この傾向の到来により、モノリシック アーキテクチャをまだ使用している企業は、徐々にマイクロサービスへの移行を検討しています。クラウド上のほとんどの Java アプリケーションは依然として SpringBoot に基づいていることがわかりました。Spring Boot アプリケーション アーキテクチャの単純さにより、クライアントは http とドメイン名を介してのみサービス呼び出しを実装できます。したがって、多くの中小企業は今でもこの方法をアプリケーション開発に使用しています。技術的な観点から見ると、SpringBoot アプリケーションをマイクロサービス アーキテクチャにアップグレードし、マイクロサービス ガバナンスによってもたらされる技術的な利益を享受するにはどうすればよいでしょうか? SpringCloud の Maven 依存性を高める必要があるのでしょうか? ビジネスコードの変換が必要ですか? この記事では、コードを 1 行も変更することなく、回答を得ることができます。

このソリューションは、MSE を介した侵入を行わずに Java アプリケーションの登録、検出、および管理機能を実現できます。

  1. MSE が提供する現在の登録センター製品機能は、主に非永続的なサービス検出に焦点を当てています。つまり、サービスの状態がクライアント上で維持されるため、ビジネス側は SDK に依存してサービスをアクティブに登録し、維持する必要があります。ハートビート。このソリューションは永続的なサービス検出機能を提供します。
  2. クロスK8sサービスディスカバリ、非K8sサービスとK8sサービスの相互ディスカバリなど、クロスプラットフォームサービスディスカバリの問題を解決します。
  3. フルリンクグレースケール、電流制限と劣化、セキュリティと信頼性など、Spring Boot アプリケーションに基づくサービスガバナンス機能の非侵入型実装。

プログラムの実践と探索

このシナリオを検証するために、もう少し複雑なデモを提供します。これにより、MSE を介した侵入なしで Spring Boot アプリケーションのサービス登録とサービス管理を実現する方法を示します。デモは、単純な HttpClient を介したサービス検出とリクエスト呼び出しのための K8s サービスに基づいています。詳細なリクエストは次のとおりです。

➜  ~ curl http://47.97.117.48/A/spring_boot                                   
A[10.0.3.238] -> B[10.0.3.227] -> C[10.0.3.230]%

スキーマは次のようになります。

画像

デモを紹介した後、サービス ガバナンスを通じてサービスを登録する方法を段階的に示してみましょう。

サービスガバナンスを通じてサービス登録を完了する

  1. 対応する MSE Nacos インスタンス ページに移動し、サービスの作成を選択します

画像.png

  1. サービス名とグループ名を入力したら、登録するサービス ガバナンス アプリケーションを選択できます。

  2. ヘルスチェック機能を有効にした後、ヘルスチェックプロトコルを選択することもできます

画像.png

  1. [OK] をクリックすると、サービス ガバナンスを通じてアプリケーションとインスタンスが MSE Nacos に登録されます。

画像

  1. 下図の構成に従い、アプリケーションAをsc-A、アプリケーションBをsc-b、アプリケーションCをsc-cとして登録します。

画像

  1. 同時に、Zuul アプリケーションの Nacos アドレス構成を変更して、SDK を通じて MSE Nacos に登録します。

  2. サービス ガバナンスを通じて登録したサービスについては、サービス ガバナンスを通じて MSE Nacos から対応するノードをオフラインにすることもできます。

画像

画像.png

  1. MSE サービス管理のノード詳細ページでサービス オフラインをクリックし、アプリケーション ポッドを再起動せずに登録センターからサービスをオフラインで実現します。

画像.png

これまでに、サービス ガバナンスによるサービスの登録が完了しました。

サービス ガバナンスを通じてサービス サブスクリプションを完了する

  1. Nacos サービスにサブスクライブする必要があるアプリケーションに次の Env を追加します。

画像.png

  1. 対応するサービスに加入するにはどうすればよいですか?

HTTP リクエスト ドメイン名は、対応するサービスを直接呼び出すことができます。次に例を示します。

restTemplate.getForObject("http://sc-b:20002/spring_boot", String.class);

このうち、 sc-b はサービス名です。デフォルトのグループ名は mse_nacos_group で指定できます。グループ名を指定する必要がある場合は、 http://sc-b:20002/spring_boot?mse_nacos_group=xxx を呼び出します

  1. 確認

a. MSE Nacos コンソールを通じて確認して、サブスクリプション関係を明確にすることができます。

画像.png

b. エンドツーエンドのリクエスト検証を通じて

➜  ~ curl http://47.97.117.48/A/spring_bootA[10.0.3.238] -> B[10.0.3.229] -> C[10.0.3.241]%

SpringBoot アプリケーションに基づくフルリンク グレー スケールの非侵入型実装

画像

これまでのところ、デフォルトで上記のシナリオを満たすフルリンク グレースケール機能があります。

➜  ~ curl http://47.97.117.48/A/spring_boot -H "x-mse-tag: gray"              
Agray[10.0.3.240] -> B[10.0.3.229] -> Cgray[10.0.3.241]%

要約する

Spring Boot アプリケーションを使用すると、フル リンク グレースケール機能によってもたらされるリリース エクスペリエンスをすぐに楽しむことができます。MSEのサービスガバナンス機能とNacosエンジンの統合により、研究開発で注意すべき部分をクラウド上でさらに簡素化・削減でき、アプリケーションのクライアントも軽量化できるため、研究開発効率がさらに向上します。

画像

ここをクリックしてマイクロサービス エンジン MSE 公式 Web サイトに入り、表示します

{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/3874284/blog/8725618