記事ディレクトリ
マイクロサービスについて知る
インターネット業界の発展に伴い、サービスに対する要件はますます高くなり、サービスアーキテクチャはモノリシック アーキテクチャから、現在一般的なマイクロサービス アーキテクチャへと徐々に進化してきました。これらのアーキテクチャの違いは何ですか?
- マイクロサービス アーキテクチャの長所と短所を理解する
モノリシックアーキテクチャ
モノリシック アーキテクチャ: すべてのビジネス機能は 1 つのプロジェクトで開発され、パッケージとして展開されます。
モノリシック アーキテクチャの長所と短所は次のとおりです。
アドバンテージ:
- シンプルなアーキテクチャ
- 導入コストが低い
欠点:
- 高度な結合 (維持とアップグレードが困難)
分散アーキテクチャ
分散アーキテクチャ: システムを業務機能ごとに分割し、各業務機能モジュールを独立したプロジェクトとして開発し、サービスと呼びます。
分散アーキテクチャの長所と短所:
アドバンテージ:
- サービス結合を減らす
- サービスのアップグレードと拡張に貢献
欠点:
- サービス呼び出し関係が複雑
考慮すべき質問
- サービス分割の粒度を定義するにはどうすればよいですか?
- サービスクラスターアドレスを維持するにはどうすればよいですか?
- サービス間で通話するにはどうすればよいですか?
- サービスの健全性ステータスをどのように認識するか?
クラスター、マイクロサービス、分散
①. マイクロサービス: 大規模な単一アプリケーションを拒否し、ビジネスに基づいてマイクロサービスを分割し、各サービスを独立してデプロイおよび実行します
- (マイクロサービスと分散の微妙な違いは、マイクロサービスのアプリケーションが必ずしも複数のサーバーに分散しているわけではなく、同じサーバーであってもよいということです)
②. クラスタ、分散、ノード
- クラスター:同じビジネスを実行するために複数のサービスが集まったもの
- クラスターは I am アプリケーションにすることができます。このアプリケーションはもう処理できません。このアプリケーションを別のマシンにデプロイし、1 つのサービスを外部に提供します。
- 分散: システムを異なるサブシステムに分割し、それらを異なるサーバーに展開します (これを分散と呼びます)。
- ノード: クラスター内のサーバー
- 注: クラスター (複数の人が同じことを一緒に行う) 分散型 (複数の人が一緒に異なることを行う)
- ディストリビューション内の各ノードはクラスターになることができますが、クラスターは必ずしも分散されている必要はありません。
- クラスターは物理的な形式であり、分散は動作方法です
例:
- この小さな店にはコックが一人しかおらず、食材を切る、洗う、下ごしらえ、調理までを一人でこなしていました。
- その後、客が増え、厨房の一人のシェフが多忙になったので、別のシェフを雇い、二人とも同じ料理を作ることができ、二人のシェフの関係はクラスターのようなものになった。
- 料理人が料理に集中して完璧な料理を完成させるために、野菜のカット、野菜の準備、材料の準備を担当するおかず料理人が雇われます...料理人とおかず料理人の関係が配信されます。
- 一人の総菜職人も多忙のため、もう一人雇うなど、二人の料理人はとても仲が良かった。
- ソムリエの一人が何らかの理由で休暇を取ったものの、他のソムリエはやるべきことをやっていました、休暇を申請しなかったソムリエの仕事が平等に増えただけで、彼らの仕事と責任は変わりません。これはクラスターです。
マイクロサービス
マイクロサービスのアーキテクチャ上の特徴:
- 単一の責任: マイクロサービスはより小さな粒度に分割されており、各サービスは固有のビジネス機能に対応し、単一の責任を実現します。
- 自律性: 独立したチーム、独立したテクノロジー、独立したデータ、独立した展開と配信
- サービス指向: サービスは、言語やテクノロジーに依存しない、統一された標準インターフェイスを提供します。
- 強力な分離: サービス コールは分離され、耐障害性があり、連鎖的な問題を回避するためにダウングレードされます。
マイクロサービスの上記の特性は、実際に分散アーキテクチャの標準を設定し、サービス間の結合をさらに減らし、サービスの独立性と柔軟性を提供します。高い凝集性と低い結合性を実現します。したがって、マイクロサービスは、優れたアーキテクチャ設計を備えた分散アーキテクチャ ソリューションであると考えることができます。、
マイクロサービスの具体的なアーキテクチャ
しかし、計画をどのように実行するのでしょうか? どのテクノロジースタックを選択すればよいでしょうか? 世界中のインターネット企業は、独自のマイクロサービス実装ソリューションを積極的に試しています。
中でもJava分野で最も注目を集めているのがSpring Cloudが提供するソリューションだ。
マイクロサービステクノロジーの比較
企業におけるテクノロジーのニーズ
使用するバージョンを確認する
- 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 は、さまざまな優れたマイクロサービス機能コンポーネントを統合した、マイクロサービス アーキテクチャのワンストップ ソリューションです
サービスを分割する際の注意点
- 異なるマイクロサービスに対して同じビジネスを繰り返し開発しないでください。
- マイクロサービス データは独立しており、他のマイクロサービスのデータベースにはアクセスしません
- マイクロサービスは、他のマイクロサービスが呼び出すためのインターフェイスとして独自のビジネスを公開できます。