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

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

无忌哥哥
无忌哥哥オリジナル
2018-07-19 09:32:261701ブラウズ


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 までご連絡ください。