Java マイクロサービス アーキテクチャ 目次:
1. 開発環境と本番環境を理解する 1.1 開発環境 普段コードを書くときはWIN10/WIN7/Macを使うことが多いです。 これらのシステムはすべて開発環境と呼ぶことができます。アプリケーションをより効率的に開発するために、多くのソフトウェアをインストールします。 これにより、オペレーティング システムの安全性と安定性が低下します。 2.1.実稼働環境(操作方法の学習、Linux オペレーティングシステム) 実稼働環境では、Win10/Mac は使用しません。このタイプのオペレーティング システムは比較的安全ではありません。実稼働環境はすべてのユーザーを対象としており、通常はプロフェッショナルなオペレーティング システムを使用します。 市場で使用されているオペレーティングシステムのほとんどはLinuxベースであり、サーバーオペレーティングシステムのWindowsバージョンも存在します。 Windows 2003 サービス 02. WEB1.0とWEB2.0 2.1. WEB1.0時代 WEB1.0 時代は帯域幅が不十分だったため、当時のほとんどのプロジェクトではコンテンツが少なく、ユーザー数も少なかった。一部のプロジェクトは外部に公開する必要すらなく、セキュリティと安定性に対する要件も高くありませんでした。 モノリシックアーキテクチャで十分 2.2. WEB2.0時代 その後、WEB2.0の登場により、ADSLダイヤルアップインターネットアクセスが実現し、ブロードバンド速度は最大8Mまで向上しました。利用者数は増加し続け、一部のポータルサイトも活発化しました。セキュリティと安定性を考慮する必要のあるプロジェクト。 モノリシックアーキテクチャに基づく設計では、WEB2.0 プロジェクトの要件を満たすことができません。モノリシックアーキテクチャ上にクラスター(複数のサーバー)を構築する必要があります。 クラスターを構築した後、プロジェクトの安定性が向上し、同時実行性が向上し、 2.3.クラスター構築後の問題
2.4.上記の問題を解決する方法(ミドルウェア) 1. Nginxは、ユーザーリクエストの均等な分散の問題を解決するために使用されます 2. Redisは、データ共有の問題を解決し、キャッシュ機能を実装するために使用されます。 3. ElacticSearchは、データ検索機能を解決するために使用されます 03. 垂直建築 たとえば、プロジェクトには、ユーザー モジュール、製品モジュール、注文モジュール、製品モジュールの 3 つのモジュールが含まれています。 一般的に、商品閲覧用の商品モジュールのトラフィックが最も多くなります。製品モジュールが過負荷になるのを防ぐための、一般的に直接的かつ効果的な方法は、クラスターを構築することです。 モノリシック アーキテクチャのクラスター上に構築した場合の効果は比較的低くなります。プロジェクトが継続的に更新されると、プロジェクト内の機能の数が増加し、最悪の場合、プロジェクトの開始に失敗する可能性があります。 モノリシック アーキテクチャに関しては、低い凝集性と高い結合性が完璧に実現されています。 (開発要件は高い凝集性と低い結合性です) 上記の問題を解決するために、垂直アーキテクチャが更新されました 04. 分散アーキテクチャ 4.1 プロジェクトの反復 プロジェクトの継続的な反復では、新しい機能と古い機能が相互に作用し、サーバーが相互に通信する必要があります。 プロジェクトは一般的に、Controller Service Dao の 3 つのレイヤーに分かれています。プログラムの速度低下を引き起こす最も大きな影響を受ける領域は通常、Service と Dao です。クラスターを構築すると、実際には 3 つのレイヤーすべてに対してクラスターが構築されますが、効果はあまり良くありません。 アーキテクチャは垂直アーキテクチャから分散アーキテクチャへと進化しました 分散アーキテクチャ実装技術: さまざまなサービス間の通信を解決するために、国内通信には 2 つの方法があります。 1. Dubboが使用するRPC方式 2.SpringCloudで使用されるHHTP方式 05. 分散アーキテクチャにおける一般的な問題 5.1 サービス間の非同期通信 分散アーキテクチャを使用すると、サービス間の通信は同期されます。 コア業務ではない一部の機能については、非同期通信を実現したいと考えています。 サービス間の非同期通信を実現するには、MQ を学ぶ必要があります。 MQ-RabbitMQ (メッセージ キュー) 5.2 サービス間の通信アドレスの維持 サービス数が増えると、各サービスのアクセスアドレスは異なります。プロトコル://アドレス:ポート番号 モジュールの数が多くなり、モジュールによって構築されるクラスターの数が増えると、他のモジュールがさまざまな IP アドレスやその他の情報を管理する必要があり、プロジェクトの保守性が極端に低下し、結合度が高くなり、負荷分散が実現できなくなります。 現在の問題を解決するには、次の技術が必要です。 Eurekaレジストリは、サービス情報の管理に役立ちます。通信アドレスの維持 Robbinはサービス間の負荷分散の実現をお手伝いします: サービス間の負荷分散を実装する 5.3 サービスの低下 上記のアーキテクチャでは、注文モジュールに問題があります。 注文モジュールに関連するすべての機能が利用できません。 これにより、サーバーが提供するスレッド プールが枯渇する可能性があり、ユーザー フレンドリなプロンプトを提供できなくなります。 上記の問題を解決するには、Hystrix を使用して処理します。 Hystrix は、サーバーのスレッド プールの枯渇を回避するためのスレッド プール分離方法を提供します。サービスが利用できない場合は、問題を解決するために回路ブレーカーを提供できます。 Hystrixを使用すると、サーキットブレーカーと分離を実装でき、最終的にはサービスの低下を防ぐことができます。 Eureka、Robbin、HystrixはすべてSpringClodのコンポーネントです 5.4 膨大なデータ データが大量になると、最終的にはデータベースにすべてのコンテンツを保存できなくなります。データベースは大量のデータを保存できますが、データベースクエリの応答時間は非常に遅くなります。 ユーザーの同時実行性が高い場合、データベースはそれに耐えられません。 上記の問題を解決するために、MyCat に基づいてデータベースをさまざまなライブラリとテーブルに分割することができます。 06. マイクロサービスアーキテクチャ 製品モジュールなど、各モジュールは個別に開発されていますが、最もストレスのかかる部分は製品クエリです。 プロジェクトをさらに個別のモジュールに分割する方法は、マイクロサービス アーキテクチャと呼ばれます。マイクロサービス アーキテクチャは、実際には分散アーキテクチャです。 6.2 コンテナ化技術 モジュールが多すぎることによる運用・保守コストの増加の問題を解決するため。 Dockerコンテナ化技術を使用して管理する 研究の後半では、多くのソフトウェアも必要になりますが、Docker を使用するとソフトウェアの追跡に役立ちます。 6.3 分散アーキテクチャにおけるその他の問題 分散アーキテクチャは多くの問題を解決するのに役立ちますが、さらに多くの問題ももたらします。 1. 分散トランザクション: トランザクションを操作する最も伝統的な方法は、Connection オブジェクトを介して操作することです。 Spring は宣言的なトランザクション操作も提供します。トランザクション問題を解決するために、後で RabbitMQ または LCN が使用されます。 2. 分散ロック: 従来のロック方法には、同期またはロックが含まれます。分散環境では、従来のロックは効果がありません。ロック問題を解決するために、後で Redis または Zookeeper が使用されます。 3. 分散タスク: 従来のスケジュールされたタスクでは、分散環境の問題により、タスクが繰り返し実行される可能性があるため、比較的大きなタスクを分割できることが期待されます。この問題を解決するために、後で Redis + Quartz または Elastic-Job が使用されます。 |
すべての破壊的技術と同様に、サーバー仮想化は静かに登場し、その後爆発的に普及し、最終的にはエネルギー...
インターネットの継続的な発展に伴い、今日の伝統的な企業は、インターネットプラットフォームを利用して自...
lisahostは、ロサンゼルスデータセンターに米国デュアルISP IP/米国住宅IP/米国ローカル...
ウェブサイトの外部リンクの最適化がますます困難になるにつれて、低コストで高品質の外部リンクを取得する...
近年、経済情勢が変動し続ける中、企業はクラウドを新たな安全地帯として捉え始めています。特にCOVID...
SimpleNode の最新 VPS 割引、KVM ベースの 2 種類、割引コード: SSDPROM...
[51CTO.comからのオリジナル記事] 「インターネット+」という国家戦略の推進により、ますます...
第一条:かつての栄光。当社は作業服や専門衣料の製造から始まった伝統ある企業です。 2000年頃には自...
サイト グループを設定する理由については、人それぞれ理由があります。私が説明したい理由は非常に単純で...
2019年に5Gが正式に商用化され、何千もの業界に大きな発展の機会をもたらしました。ファーウェイクラ...
Silu.com ページ (写真提供: Sina Technology)中国のハイビジョン映画ファン...
多くの場合、大容量の帯域幅のサーバーや無制限のトラフィックのサーバーが必要になりますが、誰もがそれほ...
これらのプラットフォームを作成する目的は、IT コンシューマライゼーション、ビッグデータ、Inter...
2020 年に見られるクラウド コンピューティングの主要トレンド テーマには、人工知能、自動化、マル...
はじめに:SEO最適化は現在最も費用対効果の高いインターネットマーケティング手法であり、最もホットな...