目次
1. 分散アーキテクチャの共通概念
アーキテクチャの開発プロセス
フェーズ 1: 単一アプリケーション アーキテクチャ
フェーズ 2: アプリケーション サーバーとデータベース サーバーの分離
フェーズ 3: アプリケーション サーバー クラスター - アプリケーション サーバー負荷アラーム
フェーズ 4: データベースの負荷が増加します - データベースの読み取りと書き込みの分離
ステージ 5: 検索エンジンを使用して、データベースの読み取りの負担を軽減します
ステージ 6: データベースへの負荷を軽減するためのキャッシュ メカニズムを導入します
ステージ 8: アプリケーションの分割
ホームページ Java &#&チュートリアル Java アプリケーション分散アーキテクチャの進化プロセスに関する簡単な説明

Java アプリケーション分散アーキテクチャの進化プロセスに関する簡単な説明

Jul 19, 2018 am 09:32 AM
java プログラミング言語


1. 分散アーキテクチャの発展の歴史

1946年に世界初の電子コンピュータが米国のペンシルバニア大学で誕生しました。その名前はENICACです。決して速いわけではありませんが、これはコンピュータ時代の到来を表しており、将来のインターネットの発展においても根本的な重要性を持っています。

コンピュータの構成は、入力デバイス、出力デバイス、メモリの 5 つの部分で完成します。メモリには、演算ユニットとコントローラが含まれています。コンピュータの構成を非常に鮮やかに説明するフォン ノイマン モデルがあります。 , しかし、コンピュータには計算や通常の動作のためのデータフロー、命令フロー、制御フローもあります。写真に示されているように:


ENIACの後、電子コンピュータはIBMが支配するメインフレームの時代に入り、1946年に最初のIBMメインフレームSYSTEM/360が誕生し、1950年代から1960年代にIBMが誕生しました。メインフレーム コンピュータ業界全体を支配したコンピュータ アーキテクチャは、CISC (マイクロプロセッサによって実行されるコンピュータ言語命令セット) CPU ベースの安価なパーソナル PC と、価格の高い RISC (縮小命令セット コンピュータ) の 2 つの方向に発展しました。 。

コンピューティング能力と処理能力、高い安定性とセキュリティを備えたメインフレームの出現は、長い間コンピューティング分野の発展をリードしてきました。しかし、集中型コンピュータ システムはいくつかの問題を引き起こしており、次のようなユーザーのニーズを満たすことができなくなってきています。

2. メインフレームはより複雑で、人材のトレーニングにかかる​​コストが比較的高くなります。

3. メインフレームの障害などの単一点の問題により、システム全体がダウンして動作できなくなり、企業に多大な損失が生じます。

4. テクノロジーの進歩に伴い、個人用 PC の性能はますます高くなり、コストはますます下がっています。

アリババは2009年に「IOE」を排除する取り組みを開始しました

IOE は、IBM のミニコンピューター、Oracle のデータベース、EMC のハイエンド ストレージ デバイスを指します。2009 年の IOE からの移行は、Alipay の最後の IBM ミニコンピューターが 2003 年にオフラインになるまで続きました。

なぜIOEに行くのか

アリババは過去にデータベースにOracleを使用し、ミニコンピューターとハイエンドストレージデバイスを使用して高性能のデータ処理とストレージサービスを提供していました。企業のビジネス量が増加し、ユーザー数が増加し続けるにつれて、従来の集中型アーキテクチャの Oracle データベースは拡張のボトルネックに直面しています。従来の Oracle と比較すると、DB2 は主に集中型であり、集中型の拡張では水平方向の拡張ではなく、上向きの拡張が主となるため、これは遅かれ早かれシステムのボトルネックになります。

1. 分散アーキテクチャの共通概念

クラスター

この小さなレストランは、野菜を切り、野菜を洗い、食材を準備し、調理するシェフであることが判明しました。その後、客が増えたとき、厨房の一人のシェフが忙しすぎたので、二人のシェフが同じ料理を作ることができました。


シェフが料理に集中して完璧な料理を作るために、野菜のカット、野菜の準備、材料の準備を担当するシェフが雇われています。シェフとシェフが分散していて、おかずシェフ一人でも多忙で、おかずシェフを雇うと二人のシェフの関係がクラスターになってしまう。したがって、分散アーキテクチャにはクラスターが存在する可能性がありますが、クラスターは分散を意味するものではありません。

Node

Nodeとは、分散プロトコルに従って一連のロジックを独立して完了できる個別のプログラムを指します。特定のプロジェクトでは、ノードはオペレーティング システム上のプロセスを表します。

レプリカのメカニズム

レプリカとは、分散システム内のデータまたはサービスに冗長性を提供することを指します。

データのコピーとは、同じデータを別のノードに保持することを指し、特定のノード上のデータが失われた場合に、コピーからデータを読み取ることができます。データのコピーは、分散システムでデータ損失が発生する唯一の手段です。

サービスコピーとは、複数のノードが同じサービスを提供し、マスター/スレーブ関係を通じてサービスの高可用性ソリューションを実現することを意味します。

ミドルウェア

ミドルウェアは、オペレーティングシステムによって提供されるサービスに追加されるものであり、アプリケーションに属さず、開発者にとってアプリケーション層とシステム層の間の通信、入出力を便利に処理するソフトウェアの一種です。これにより、ユーザーはアプリケーションの一部を気にすることができます。

アーキテクチャの開発プロセス

成熟した大規模Webサイトシステムのアーキテクチャは、最初から完璧に設計されているわけではなく、最初から高性能、高可用性、セキュリティなどの機能を備えているわけではなく、ユーザー数の増加に伴い、ビジネス機能の拡張が徐々に改善されるにつれて、時間の経過とともに進化しました。この開発プロセスでは、開発モデルや技術アーキテクチャなどが大きく変化します。

システムが以下の機能を持っているとします:

ユーザーモジュール: ユーザーの登録と管理

商品モジュール: 商品の表示と管理

トランザクションモジュール: トランザクションの作成と支払い決済

フェーズ 1: 単一アプリケーション アーキテクチャ

システムの開始時には、アプリケーションとデータベースの両方が 1 つのサーバー上に配置されます。

フェーズ 2: アプリケーション サーバーとデータベース サーバーの分離

Web サイトのユーザー数が増加し、トラフィックが増加するにつれて、アプリケーション サーバーとデータベース サーバーを別々のデプロイメント マシンに配置すると、システムのパフォーマンスが向上し、パフォーマンスが向上します。アクセス効率が向上し、単一マシンの負荷容量と災害復旧機能が向上します。

フェーズ 3: アプリケーション サーバー クラスター - アプリケーション サーバー負荷アラーム

アクセス数とトラフィックが増加すると、データベースにボトルネックが発生しないと仮定して、アプリケーション サーバー クラスターを使用してリクエストをオフロードし、プログラムのパフォーマンスを向上させます。既存の問題: ユーザーのリクエストを誰が転送するか、およびセッションをどのように管理するか。

フェーズ 4: データベースの負荷が増加します - データベースの読み取りと書き込みの分離

読み取りと書き込みが分離されている場合、今後のリクエストとクエリリクエストはスレーブライブラリからデータを読み取り、書き込まれたデータをメインライブラリに送信できます。ただし、次のような問題が発生します:

1. マスター データベースとスレーブ データベース間のデータ同期: mysql に付属のマスター/スレーブ メソッドを使用して、マスター/スレーブ レプリケーションを実現できます。

2. 対応するデータ ソースの選択: を使用します。サードパーティのデータベースミドルウェア (mycat

など)

ステージ 5: 検索エンジンを使用して、データベースの読み取りの負担を軽減します

データベースの読み取りにデータベースを使用する場合、特に大規模なインターネット企業の場合、検索対象のモジュールのファジー クエリのパフォーマンスがあまり良くないことがよくあります。これにより、検索エンジンを使用できるようになり、クエリの速度が大幅に向上しますが、インデックスの構築などの問題も発生します。

ステージ 6: データベースへの負荷を軽減するためのキャッシュ メカニズムを導入します

一部のホット データについては、アプリケーション層のキャッシュとして redis と memcache を使用できます。また、シナリオによっては、mongodb を使用して置き換えることもできます。保存するリレーショナル データベース。

ステージ 7: データベースの水平/垂直分割

垂直分割: データベース内の異なるビジネス データを異なるデータベースに分割します。

水平分割: 同じテーブル内のデータを 2 つ以上のデータベースに分割します。水平分割の理由は、現時点で、大量のデータを扱う一部のビジネスが単一のデータベースのボトルネックに達しているためです。テーブルを複数のデータベースに分割します。

ステージ 8: アプリケーションの分割

ビジネスの発展に伴い、ビジネスの数はますます増え、アプリケーションに対するプレッシャーは増大しています。プロジェクトの規模もますます大きくなっています。現時点では、アプリケーションを分割し、ドメイン モデルに従ってユーザー、製品、トランザクションをサブシステムに分割することを検討できます。

このような分割後、ユーザーの操作や商品取引の問い合わせなど、いくつかの同一のコードが存在する可能性があり、これらすべてにより、各システムにユーザーの問い合わせとアクセス関連の操作が発生します。これらの同じコードとモジュールは抽象化する必要があります。これにより保守・管理が容易になります。

サービスが分割された後、サービス間の通信は RPC テクノロジーを介して行われます。代表的なものは、Web サービス、hession、http、RMI などです。

以上がJava アプリケーション分散アーキテクチャの進化プロセスに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スタックの下部に要素を挿入するJavaプログラム スタックの下部に要素を挿入するJavaプログラム Feb 07, 2025 am 11:59 AM

スタックは、LIFO(最後の、最初のアウト)の原則に従うデータ構造です。言い換えれば、スタックに最後に追加する要素は、削除される最初の要素です。要素をスタックに追加(またはプッシュ)すると、それらは上に配置されます。つまり、とりわけ

See all articles