モノリスアーキテクチャ
すべての機能を 1 つのプロジェクトで開発する場合、それはモノリス アーキテクチャ ベースのアプリケーションと呼ばれます。
アプリケーションを jar/war としてパッケージ化してサーバーにデプロイします。
モノリス アプリケーションにはすべての機能が含まれているため、fat jar/war になります。
メリット
1) 開発と管理が簡単。
2) すべてが 1 か所で入手可能です。
3) 設定は 1 回だけ必要です。
短所
1) メンテナンスが難しい
2) 単一障害点
3) 変更を行った場合、プロジェクト全体が再デプロイされ、テストされます。
4) 開発者はモジュール全体の知識がない可能性があるため、問題の修正を開始するのは困難です。
5) 一部のモジュールの負荷が高くなった場合は、アプリケーション全体の複数のインスタンスを作成する必要があり、各モジュールが互いに緊密に結合されているため、多くのスペースが必要になります。
モノリシックの問題を克服するために、マイクロサービス アーキテクチャが市場に登場しました
マイクロサービスアーキテクチャ
マイクロサービスは、プログラミング言語、フレームワーク、または API ではありません。マイクロサービスはアーキテクチャ設計パターンです。
疎結合でアプリケーション機能を開発することを提案するマイクロサービス。
マイクロサービス アーキテクチャでは、単一のプロジェクトですべての機能を開発するわけではありません。プロジェクトの機能を複数の REST API に分割します。
マイクロサービスは Java だけに関係するものではありません。プログラミング言語固有のプロジェクトではマイクロサービス アーキテクチャを使用できます。
マイクロサービスは、小規模なサービスを開発するアプローチです。各サービスは独自のコンテナ/プロセス/サーバー上で実行され、サービスは軽量で独立してデプロイ可能である必要があります。これにより、より迅速な開発、展開、拡張性が可能になります。
ご覧のとおり、モノリス アプリケーションの従業員モジュール、顧客モジュール、住所モジュール、コース モジュールは小規模なサービスに変換されているため、ここでは従業員サービス、顧客サービス、住所サービス、コース サービスのようなものになります。モノリス アプリケーションでは単一のデータベースが使用されますが、マイクロサービス アプリケーションでは各サービスが独自のデータベースを持ちます。そしてそれらは今では相互に依存しています。各サービスは相互に通信し、残りの呼び出しをスローします。
メリット
- テクノロジーの独立性 (Python、Go などの複数のテクノロジーを使用してバックエンド API を開発できます)
データベースの独立性。
各サービスは互いに独立しているため (疎結合)、各サービスを個別にデプロイできます。
いずれかのサービスで変更を実行する場合、すべてのサービスをデプロイする必要はなく、1 つのサービスのみを 1 つだけデプロイします。
1 つのサービスに取り組む開発者は、アプリケーション全体の知識を必要としません。
単一のマイクロサービスの障害はアプリケーション全体に影響を与えず、全体的な復元力が向上します。
コードベースが小さくなり、関心事が分離されることで、メンテナンスとデバッグがより管理しやすくなります。
個々のマイクロサービスは小さくて独立しているため、アプリケーション全体を拡張することなく、需要に基づいて個別に拡張できます。
各サービスは異なる方法でテストできます。
デメリット
- 1 つのサービス構成で変更を実行したい場合、各サービス構成で変更を実行する必要はありません。たとえば、すべてのプロジェクトのすべての application.properties ファイルに存在する共通のプロパティがあります。
company.name=tier3Hub
したがって、会社名を変更したい場合は、すべてのサービスで名前を変更する必要があります。
マイクロサービスベースのアプリケーションのテストは、サービス間の相互依存性と相互作用により、より複雑になる可能性があります。
サービスがダウンするよりも多くのリクエストを送信した場合、各サービスはその後、特定の量のリクエストを処理するため、そのサービスの複数のインスタンスが必要であり、リクエストをサービスの別のインスタンスにルーティングするには、クライアントからのリクエストと別のインスタンスのルートのバランスをとったロードバランサー。しかし、ロードバランサーを Java で書くのは難しいです。
マイクロサービスに Java を使用する理由
Java は、Rest API を開発するための Spring-Boot と呼ばれるフレームワークを提供しており、サービスを開発している場合、サーバー上に sech サービスをデプロイする必要がある場合、Spring-Boot は自動構成、組み込みサーバーなどの多くの機能を提供します。 Spring-Boot は Tomcat サーバーを提供するため、各サービスは Tomcat の異なるポートで実行されます。たとえば、従業員サービスはポート 8080 で実行され、コース サービスはポート 8081 で実行され、各サービスには独自のサーバーがあります。
spring-Boot の助けを借りて、迅速な開発、少ない構成、本番対応アプリケーションおよびステーター プロジェクトのための機能を提供します
Spring Framework の下には、既製のサポート マイクロサービスを提供する Spring Cloud と呼ばれるプロジェクトがあり、Spring Cloud は、マイクロサービスの共通パターンを迅速に開発するためのいくつかの共通ツールと技術を提供します。
Spring Cloud は、典型的なユースケースに対してすぐに使用できる優れたエクスペリエンスと、他のユースケースをカバーする拡張メカニズムを提供することに重点を置いています。
- 分散/バージョン管理された構成
- サービスの登録と検出
- ルーティング
- サービス間の呼び出し
- 負荷分散
- サーキットブレーカー
- 分散メッセージング
- 有効期間が短いマイクロサービス (タスク)
- 消費者主導および生産者主導の契約テスト。
マイクロサービスアーキテクチャ
マイクロサービス用の固定アーキテクチャはありません。開発者はプロジェクトの要件に従ってマイクロサービス アーキテクチャをカスタマイズしています。ほとんどのプロジェクトは、マイクロサービス アーキテクチャの以下のコンポーネントを使用します。
1) サービスレジストリ (Eureka サーバー)
2) サービス (REST API)
3) サービス間通信 (FeginClient)
4) API ゲートウェイ
5) 管理サーバー
6) ジップキン
結論
Java のマイクロサービスは、ソフトウェア開発へのアプローチ方法を変革し、新しいレベルの柔軟性、拡張性、回復力をもたらしました。 Java の豊富なエコシステムと Spring Boot、Micronaut などのフレームワークを組み合わせることで、最新のアプリケーションの要求に耐えられるマイクロサービスを構築するための優れた選択肢となります。
このアーキテクチャを調査してみると、従来のモノリシック アプリケーションよりもマイクロサービスの人気が高まっている理由が明らかです。これらはモジュール性と独立性を提供し、チームがサービスを個別に開発、展開、拡張できるようにします。これは、クラウドネイティブ機能がますます標準になりつつある世界では特に価値があります。ただし、その過程では、データの一貫性の確保、サービス間通信の管理、サービス全体での堅牢なセキュリティの維持などの課題も明らかになりました。
マイクロサービスを扱う Java 開発者にとって、ツールや実践方法の最新の進歩を常に最新の状態に保つことは非常に重要です。状況は常に進化しており、適応する者は、このアーキテクチャの可能性を最大限に活用できる最適な立場に立つことができます。 Java のマイクロサービスの将来は、知識と経験を共有したいと願う開発者のコミュニティの成長によってサポートされ、フレームワークとツールが継続的に改善されているため、有望に見えます。
Java でマイクロサービスを採用することは、より回復力があり、スケーラブルで、保守しやすいアプリケーションを作成するための扉を開くことを意味します。ベスト プラクティスに従い、継続的な学習に専念することで、開発者はソフトウェア開発の新たな可能性を解き放ち、より革新的で効率的なソリューションを生み出すことができます。
以上がJava Spring Boot を使用したスケーラブルなマイクロサービスの構築: ベスト プラクティスとテクニック パート -1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

aeffectivelytestjavaapplicationsforformcompativity、followthesesteps:1)setupautomatedacrossmultipleplatformsusingsingcitoolslikejenkinsorgithubactions.2)divivisonmanualtingonrealhardwaretocatissusuessususus.3)

Javaコンパイラは、ソースコードをプラットフォームに依存しないバイトコードに変換することにより、Javaのプラットフォームの独立性を実現し、JVMがインストールされた任意のオペレーティングシステムでJavaプログラムを実行できるようにします。

bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

Javaは、「Write onse、Averywhere」を通じてプラットフォームの独立性を実現し、コードの保守性を向上させます。 2。メンテナンスコストが低いため、1つの変更のみが必要です。 3.チームのコラボレーション効率が高く、知識共有に便利です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









