Java マイクロサービス アーキテクチャ、WEB2.0、垂直アーキテクチャ、分散アーキテクチャ、マイクロサービス アーキテクチャを 1 つの記事で理解する

Java マイクロサービス アーキテクチャ、WEB2.0、垂直アーキテクチャ、分散アーキテクチャ、マイクロサービス アーキテクチャを 1 つの記事で理解する

Java マイクロサービス アーキテクチャ

目次:

  1. 開発環境と本番環境を理解する
  2. WEB1.0とWEB2.0
  3. 垂直アーキテクチャ
  4. 分散アーキテクチャ
  5. マイクロサービスアーキテクチャ

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.クラスター構築後の問題

  1. ユーザーのリクエストはどのサーバーに送信する必要がありますか?ユーザー数の増加による負担を軽減するために、リクエストがさまざまなサーバーに均等に分散されるようにするにはどうすればよいでしょうか?
  2. プロジェクトを作成するときに、ユーザーが正常にログインすると、ユーザーの ID がセッションに保存されます。クラスターを構築した後、データ共有の問題
  3. データ量が特に多い場合、データベースに直接クエリを実行すると、速度が非常に遅くなります。クエリの効率を向上させるにはどうすればよいでしょうか?
  4. 「%#{xxx}%」のようなコンテンツを含むデータを検索する場合

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 が使用されます。

<<:  クラウドコンピューティングの統合は必須

>>:  クラウドコストの最適化は企業にとって優先事項となる

推薦する

x5x: 月額わずか 1.5 ユーロで無制限の VPS、ロシア、オランダ、米国

x5x.ru は、2006 年から運営されているロシアのホスティング会社です。その事業には、仮想ホス...

ウェブサイトの観点からインターネットビジネスプランの書き方について簡単に説明します

インターネットの急速な発展により、あらゆる業界で大きな変化が起こっています。中国は現在、インターネッ...

20 のブランドが 2016 年のブランド コンテンツ マーケティングの 3 つの領域について語ります。

現代社会は消費社会の段階に入っています。これは軽蔑的な言葉ではなく、消費が社会の主な活動となっている...

時代の脈動をつかむ:しばらくはニュースのホットスポットでキーワードを飛ばそう

企業のウェブサイト、個人のウェブサイト、その他のウェブサイトであっても、そのウェブサイトが誰かによっ...

404 ページが多数あると、Web サイトの信頼性が低下しますか?

今日は、ウェブサイトの 404 ページがウェブサイトに与える影響についてお話します。ウェブサイトの再...

ビッグデータが金儲け:百度は休眠中、淘宝網は地盤を固めている

「百度もRTB広告取引プラットフォームの立ち上げを準備中だ」最近、国内大手DSPの幹部が記者らにこの...

リバースホスト - 12 USD/年/4 コア/512 MB RAM/60 GB ハードドライブ/1 TB 帯域幅

Reversehosts は、ブラック フライデーの前に、4 つのコアと 512 MB のメモリを備...

Kua Kua グループのレビュー: 人気商品はわずか 24 時間ですぐに時代遅れになります。

3月、春が訪れて花が咲くと、WeChatやQQのグループには雨後の筍のように賛美グループが突然現れま...

オープンソースは単なるスローガンではありません。 Red Hatのオープンソースアプローチを見る

[元記事は51CTO.comより] 新型コロナウイルス流行の影響で、多くのテクノロジー企業のカンファ...

Kubernetes の 5 つのセキュリティ プラクティス

[[343801]] Kubernetes は登場してからまだ 6 年も経っていませんが、すでにみん...

ウェブページのスナップショットが更新されないいくつかの状況の分析

フォーラムではいつも、「なぜ私のウェブサイトのスナップショットは更新されないのですか?」と質問する人...

データ駆動型のエッジは現代のエネルギー環境に不可欠である

公共事業の運用を近代化するには、モノのインターネットやその他のスマート デバイスによって生成される膨...

私は 400 件以上のブログ記事を書いています。なぜ SEO ブログの更新にこだわるのか、その理由をお話ししましょう。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますこれまでに...

Huayun DataのXu Guangbin氏は、アモイ市党委員会書記のHu Changsheng氏や他の指導者らとクラウドコンピューティングの開発について議論した。

[[265287]]華雲データグループの徐光斌会長兼社長が、福建省党委員会常務委員兼厦門市党委員会書...

WeChatはサービスアカウントに年会費を課すという噂がある。テンセント:ノーコメント

北京ニュース(劉霞記者)WeChatは商業化に向けて重要な一歩を踏み出すかもしれない。昨日の市場ニュ...