第 1 章 マイクロサービスについて知る

マイクロサービスについて知る

インターネット業界の発展に伴い、サービスに対する要件はますます高くなり、サービスアーキテクチャはモノリシック アーキテクチャから、現在一般的なマイクロサービス アーキテクチャへと徐々に進化してきました。これらのアーキテクチャの違いは何ですか?

  • マイクロサービス アーキテクチャの長所と短所を理解する

モノリシックアーキテクチャ

モノリシック アーキテクチャ: すべてのビジネス機能は 1 つのプロジェクトで開発され、パッケージとして展開されます。

画像-20230817155321413

モノリシック アーキテクチャの長所と短所は次のとおりです。

アドバンテージ:

  • シンプルなアーキテクチャ
  • 導入コストが低い

欠点:

  • 高度な結合 (維持とアップグレードが困難)

分散アーキテクチャ

分散アーキテクチャ: システムを業務機能ごとに分割し、各業務機能モジュールを独立したプロジェクトとして開発し、サービスと呼びます。

画像-20230817155806244

分散アーキテクチャの長所と短所:

アドバンテージ:

  • サービス結合を減らす
  • サービスのアップグレードと拡張に貢献

欠点:

  • サービス呼び出し関係が複雑

考慮すべき質問

画像-20230817160011635
  • サービス分割の粒度を定義するにはどうすればよいですか?
  • サービスクラスターアドレスを維持するにはどうすればよいですか?
  • サービス間で通話するにはどうすればよいですか?
  • サービスの健全性ステータスをどのように認識するか?

クラスター、マイクロサービス、分散

①. マイクロサービス: 大規模な単一アプリケーションを拒否し、ビジネスに基づいてマイクロサービスを分割し、各サービスを独立してデプロイおよび実行します

  • (マイクロサービスと分散の微妙な違いは、マイクロサービスのアプリケーションが必ずしも複数のサーバーに分散しているわけではなく、同じサーバーであってもよいということです)

②. クラスタ、分散、ノード

  • クラスター:同じビジネスを実行するために複数のサービスが集まったもの
    • クラスターは I am アプリケーションにすることができます。このアプリケーションはもう処理できません。このアプリケーションを別のマシンにデプロイし、1 つのサービスを外部に提供します。
  • 分散: システムを異なるサブシステムに分割し、それらを異なるサーバーに展開します (これを分散と呼びます)。
  • ノード: クラスター内のサーバー
    • 注: クラスター (複数の人が同じことを一緒に行う) 分散型 (複数の人が一緒に異なることを行う)
    • ディストリビューション内の各ノードはクラスターになることができますが、クラスターは必ずしも分散されている必要はありません。
    • クラスターは物理的な形式であり、分散は動作方法です

例:

  • この小さな店にはコックが一人しかおらず、食材を切る、洗う、下ごしらえ、調理までを一人でこなしていました。
  • その後、客が増え、厨房の一人のシェフが多忙になったので、別のシェフを雇い、二人とも同じ料理を作ることができ、二人のシェフの関係はクラスターのようなものになった。
  • 料理人が料理に集中して完璧な料理を完成させるために、野菜のカット、野菜の準備、材料の準備を担当するおかず料理人が雇われます...料理人とおかず料理人の関係が配信されます。
  • 一人の総菜職人も多忙のため、もう一人雇うなど、二人の料理人はとても仲が良かった。
  • ソムリエの一人が何らかの理由で休暇を取ったものの、他のソムリエはやるべきことをやっていました、休暇を申請しなかったソムリエの仕事が平等に増えただけで、彼らの仕事と責任は変わりません。これはクラスターです。

マイクロサービス

マイクロサービスのアーキテクチャ上の特徴:

  • 単一の責任: マイクロサービスはより小さな粒度に分割されており、各サービスは固有のビジネス機能に対応し、単一の責任を実現します。
  • 自律性: 独立したチーム、独立したテクノロジー、独立したデータ、独立した展開と配信
  • サービス指向: サービスは、言語やテクノロジーに依存しない、統一された標準インターフェイスを提供します。
  • 強力な分離: サービス コールは分離され、耐障害性があり、連鎖的な問題を回避するためにダウングレードされます。

マイクロサービスの上記の特性は、実際に分散アーキテクチャの標準を設定し、サービス間の結合をさらに減らし、サービスの独立性と柔軟性を提供します。高い凝集性と低い結合性を実現します。したがって、マイクロサービスは、優れたアーキテクチャ設計を備えた分散アーキテクチャ ソリューションであると考えることができます。

マイクロサービスの具体的なアーキテクチャ

画像-20230817161338056

しかし、計画をどのように実行するのでしょうか? どのテクノロジースタックを選択すればよいでしょうか? 世界中のインターネット企業は、独自のマイクロサービス実装ソリューションを積極的に試しています。

中でもJava分野で最も注目を集めているのがSpring Cloudが提供するソリューションだ。

マイクロサービステクノロジーの比較

画像-20230817161814420

企業におけるテクノロジーのニーズ

画像-20230817162312072

使用するバージョンを確認する

画像-20230817162608112
  • SpringBootのバージョンは2.3.4.RELEASEです
  • SpringCloudのバージョンはHoxton.SR8です。
  • spring-cloud-alibaba-dependency は 2.2.2.RELEASE
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
</properties>

要約する

  • モノリシック アーキテクチャ: シンプルで便利、高度に結合されているが拡張性が低く、小規模プロジェクトに適しています。例: 学生管理システム

  • 分散アーキテクチャ: 疎結合で拡張性が優れていますが、アーキテクチャは複雑で困難です。JD.com、Taobao などの大規模なインターネット プロジェクトに適しています。

  • マイクロサービス: 優れた分散アーキテクチャ ソリューション

    • ① 利点: 分割粒度が小さく、サービスの独立性が高く、結合度が低い

    • ② デメリット: アーキテクチャが非常に複雑なため、運用、保守、監視、展開がより困難になります。

SpringCloud は、さまざまな優れたマイクロサービス機能コンポーネントを統合した、マイクロサービス アーキテクチャのワンストップ ソリューションです

サービスを分割する際の注意点

  • 異なるマイクロサービスに対して同じビジネスを繰り返し開発しないでください。
  • マイクロサービス データは独立しており、他のマイクロサービスのデータベースにはアクセスしません
  • マイクロサービスは、他のマイクロサービスが呼び出すためのインターフェイスとして独自のビジネスを公開できます。
画像-20210713210800950

おすすめ

転載: blog.csdn.net/qq_50985215/article/details/132678312