Spring Cloud (1): マイクロサービスの概要

1. マイクロサービスとは

マイクロサービスはアーキテクチャ スタイルおよびアーキテクチャ設計手法であり、大規模で複雑なソフトウェア アプリケーションは 1 つまたは複数のマイクロサービスで構成されます。システム内の各マイクロサービスは独立してデプロイでき、各マイクロサービスは疎結合されています。各マイクロサービスは、1 つのタスクを実行し、それを適切に実行することだけに重点を置いています。いずれの場合も、各タスクは小規模ビジネスの機能を表します。

2. マイクロサービスが必要な理由

従来の開発モードでは、ほとんどの Web アプリケーションはモノリシック アーキテクチャのスタイルで構築されます。これにより、すべてのインターフェイス、ビジネス ロジック層、データ永続層がすべて Web アプリケーションにパッケージ化され、1 つに配置されます。1 台のサーバー上で、さまざまなモジュールが高度に結合されました。この開発モデルでは、マルチチーム共同開発の開発コストが非常に高くなります。

3. 単一アプリケーションの問題

  • ビジネスの成長に伴い、開発はますます複雑になります

  • 単一の機能を変更する場合、システム全体をパッケージ化してデプロイする必要がある

  • 複数のチームが同時にデータを運用および管理するため、セキュリティ上の脆弱性が発生しやすくなります。

  • 各モジュールは比較的統一された技術を用いて開発されており、実際の状況に応じてモジュールごとにより適切な技術フレームワークを選択することが難しく、システムの拡張性が比較的低い。

  • モジュール間の結合度が高く、初心者が使い始めるまでに時間がかかる

分散型、クラスター

クラスタ: 1 台のサーバーでは大量の同時データ アクセスをロードできないため、負荷を分散するためにより多くのサーバーをセットアップする必要があります。春節の旅行シーズン中に駅の切符売り場を増やすなど、同時実行性の高い問題を物理レベルで解決します。

分散: 大規模なプロジェクト アーキテクチャを複数のマイクロサービスに分割し、共同で完了します。切符の購入を出発地と目的地の統計に分けたり、切符の有無を確認したり、切符を一元的に購入したりするなど、細かい作業を別々の人が担当し、最終的には全員が実行するという問題をソフトウェア設計レベルで解決します。作業結果は処理され、より大きなニーズを実現するための統合。

4 番目に、マイクロサービスの利点

  1. 各サービスの開発、テスト、展開は相互に独立しています。特定のサービスに対して、負荷分散などのより多くの操作を実行できます。

  2. 新しい要件が追加された場合、従来のプロジェクトではさまざまな側面の影響を考慮する必要がありますが、マイクロサービスにはそのような問題がなく、手間、労力、心配が軽減されます。

  3. マイクロサービスを使用してプロジェクトを分割した後は、外部インターフェイスが正常に動作することを確認するだけでよく、これによりモジュール間の結合が大幅に軽減され、開発効率が大幅に向上します。

5. マイクロサービスのデメリット

  1. マイクロサービスの分割はビジネスに基づいており、自由に分割することはできないため、どのように分割するかはプロジェクト アーキテクチャにとって非常に重要かつ困難な課題です。

  2. サービス間の通話では、他のサービスプロバイダーとの通信が必要になることが多く、まったく異なる会社や部門が存在する場合は通信コストが比較的高く、サービスの外部インターフェースの変更が必要な場合は通信コストも高くなります。他のサービスと通信する必要があるため、呼び出し側が通信します。

  3. 各サービスは独立しており、データも独立しているため、複数のサービスのインターフェースを運用する場合、データの整合性をどう確保するかが難しい点となります。データの一貫性はマイクロサービスにおける難しい問題です。

6. Spring Cloudを選ぶ理由

マイクロサービスには多くの欠点もありますが、欠点が隠されているわけではなく、一般的に言えば、マイクロサービスは依然として分散アーキテクチャを実装する非常に優れた方法です。現在非常に注目されている技術であり、今後の技術開発のトレンドでもあります。より一般的なマイクロサービス フレームワークは、Spring Cloud と dubbo です。では、なぜ Spring Cloud を選んだのかというと、その理由は次のとおりです。

1. Spring Cloud は完全に Spring Boot に基づいており、サービス呼び出しは REST API に基づいており、さまざまな成熟した製品とアーキテクチャを統合すると同時に、全体的な開発、構成、デプロイも Spring Boot に基づいて行われます。とても便利。

2. Springシリーズ製品は、充実した機能、シンプルで使いやすい、美しいパフォーマンス、標準化されたドキュメントなどの利点があります。

7、Spring Cloudの全体的なアーキテクチャ

ここに画像の説明を挿入

8、Spring Cloud のコアコンポーネント

Spring Cloudは複数のコンポーネントで構成されており、主にサービスガバナンスEureka、サービスコミュニケーションRibbon、サービスコミュニケーションFeign、サービスゲートウェイZuul、サービスフォールトトレランスHystrix、サービス構成Config、サービスモニタリングActuator、サービス追跡Zipkin、およびその他の8つの主要コンポーネントです。Spring Cloud の学習は主に、これらのコンポーネントの使用法とこれらのコンポーネント間の統合を学習することです。
ここに画像の説明を挿入

9. サービスの管理方法

サービス ガバナンスの中核は、サービス プロバイダー、サービス コンシューマ、レジストリの 3 つの部分で構成されます。

サービスの登録: 分散システム アーキテクチャでは、各マイクロサービスは開始時に独自の情報を登録センターに保存します。

サービスディスカバリ:サービス利用者は、登録センターからサービスプロバイダの情報を取得し、この情報を介してサービスプロバイダのサービスを呼び出す。

Spring Cloud のサービス ガバナンスは Eureka を使用して実装されますが、どのように機能するのでしょうか? Spring Cloud に期待しましょう(2): Eureka Server Registration Center

開発エンジニアの一人も継続学習段階にあり、普段のちょっとした体験談を随時共有しています。私の書いた文章を読んでくれた方が、寄り道をせずに仕事や勉強の成功を祈っていただければ幸いです。
ブロガーの経験は限られていますが、欠点がある場合は、コミュニケーションを取り、一緒に改善することを歓迎します。同じ CSDN の皆さんと一緒に進歩していきたいと思っています。

著者 | スイートリトルスイートポテト
プロデュース | リトルスイートポテト

おすすめ

転載: blog.csdn.net/qq_36836370/article/details/130869680