IOE は、IBM のミニコンピューター、Oracle のデータベース、EMC のハイエンド ストレージ デバイスを指します。2009 年の IOE からの移行は、Alipay の最後の IBM ミニコンピューターが 2003 年にオフラインになるまで続きました。
なぜIOEに行くのか
アリババは過去にデータベースにOracleを使用し、ミニコンピューターとハイエンドストレージデバイスを使用して高性能のデータ処理とストレージサービスを提供していました。企業のビジネス量が増加し、ユーザー数が増加し続けるにつれて、従来の集中型アーキテクチャの Oracle データベースは拡張のボトルネックに直面しています。従来の Oracle と比較すると、DB2 は主に集中型であり、集中型の拡張では水平方向の拡張ではなく、上向きの拡張が主となるため、これは遅かれ早かれシステムのボトルネックになります。
クラスター
この小さなレストランは、野菜を切り、野菜を洗い、食材を準備し、調理するシェフであることが判明しました。その後、客が増えたとき、厨房の一人のシェフが忙しすぎたので、二人のシェフが同じ料理を作ることができました。
シェフが料理に集中して完璧な料理を作るために、野菜のカット、野菜の準備、材料の準備を担当するシェフが雇われています。シェフとシェフが分散していて、おかずシェフ一人でも多忙で、おかずシェフを雇うと二人のシェフの関係がクラスターになってしまう。したがって、分散アーキテクチャにはクラスターが存在する可能性がありますが、クラスターは分散を意味するものではありません。
Node
Nodeとは、分散プロトコルに従って一連のロジックを独立して完了できる個別のプログラムを指します。特定のプロジェクトでは、ノードはオペレーティング システム上のプロセスを表します。
レプリカのメカニズム
レプリカとは、分散システム内のデータまたはサービスに冗長性を提供することを指します。
データのコピーとは、同じデータを別のノードに保持することを指し、特定のノード上のデータが失われた場合に、コピーからデータを読み取ることができます。データのコピーは、分散システムでデータ損失が発生する唯一の手段です。
サービスコピーとは、複数のノードが同じサービスを提供し、マスター/スレーブ関係を通じてサービスの高可用性ソリューションを実現することを意味します。
ミドルウェア
ミドルウェアは、オペレーティングシステムによって提供されるサービスに追加されるものであり、アプリケーションに属さず、開発者にとってアプリケーション層とシステム層の間の通信、入出力を便利に処理するソフトウェアの一種です。これにより、ユーザーはアプリケーションの一部を気にすることができます。
成熟した大規模Webサイトシステムのアーキテクチャは、最初から完璧に設計されているわけではなく、最初から高性能、高可用性、セキュリティなどの機能を備えているわけではなく、ユーザー数の増加に伴い、ビジネス機能の拡張が徐々に改善されるにつれて、時間の経過とともに進化しました。この開発プロセスでは、開発モデルや技術アーキテクチャなどが大きく変化します。
システムが以下の機能を持っているとします:
ユーザーモジュール: ユーザーの登録と管理
商品モジュール: 商品の表示と管理
トランザクションモジュール: トランザクションの作成と支払い決済
システムの開始時には、アプリケーションとデータベースの両方が 1 つのサーバー上に配置されます。
Web サイトのユーザー数が増加し、トラフィックが増加するにつれて、アプリケーション サーバーとデータベース サーバーを別々のデプロイメント マシンに配置すると、システムのパフォーマンスが向上し、パフォーマンスが向上します。アクセス効率が向上し、単一マシンの負荷容量と災害復旧機能が向上します。
アクセス数とトラフィックが増加すると、データベースにボトルネックが発生しないと仮定して、アプリケーション サーバー クラスターを使用してリクエストをオフロードし、プログラムのパフォーマンスを向上させます。既存の問題: ユーザーのリクエストを誰が転送するか、およびセッションをどのように管理するか。
読み取りと書き込みが分離されている場合、今後のリクエストとクエリリクエストはスレーブライブラリからデータを読み取り、書き込まれたデータをメインライブラリに送信できます。ただし、次のような問題が発生します:
1. マスター データベースとスレーブ データベース間のデータ同期: mysql に付属のマスター/スレーブ メソッドを使用して、マスター/スレーブ レプリケーションを実現できます。
2. 対応するデータ ソースの選択: を使用します。サードパーティのデータベースミドルウェア (mycat
など)データベースの読み取りにデータベースを使用する場合、特に大規模なインターネット企業の場合、検索対象のモジュールのファジー クエリのパフォーマンスがあまり良くないことがよくあります。これにより、検索エンジンを使用できるようになり、クエリの速度が大幅に向上しますが、インデックスの構築などの問題も発生します。
一部のホット データについては、アプリケーション層のキャッシュとして redis と memcache を使用できます。また、シナリオによっては、mongodb を使用して置き換えることもできます。保存するリレーショナル データベース。
ステージ 7: データベースの水平/垂直分割
垂直分割: データベース内の異なるビジネス データを異なるデータベースに分割します。
水平分割: 同じテーブル内のデータを 2 つ以上のデータベースに分割します。水平分割の理由は、現時点で、大量のデータを扱う一部のビジネスが単一のデータベースのボトルネックに達しているためです。テーブルを複数のデータベースに分割します。
ビジネスの発展に伴い、ビジネスの数はますます増え、アプリケーションに対するプレッシャーは増大しています。プロジェクトの規模もますます大きくなっています。現時点では、アプリケーションを分割し、ドメイン モデルに従ってユーザー、製品、トランザクションをサブシステムに分割することを検討できます。
このような分割後、ユーザーの操作や商品取引の問い合わせなど、いくつかの同一のコードが存在する可能性があり、これらすべてにより、各システムにユーザーの問い合わせとアクセス関連の操作が発生します。これらの同じコードとモジュールは抽象化する必要があります。これにより保守・管理が容易になります。
サービスが分割された後、サービス間の通信は RPC テクノロジーを介して行われます。代表的なものは、Web サービス、hession、http、RMI などです。
以上がJava アプリケーション分散アーキテクチャの進化プロセスに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。