Skip to main content

分散キャッシュの概要

InterSystems IRIS® データ・プラットフォームを拡張して作業負荷の要件を満たすために、垂直方向の拡張だけでは不十分な場合は、アーキテクチャが簡単で、アプリケーションに透過的であり、低コストの水平方向の拡張アプローチである、分散キャッシュを検討してください。分散キャッシュは、InterSystems IRIS のコア・コンポーネントである ECP (エンタープライズ・キャッシュ・プロトコル) に依存しています。

InterSystems IRIS 分散キャッシュ・アーキテクチャでは、データ・サーバの前にあるアプリケーション・サーバの層全体にわたってアプリケーション・ロジックとキャッシュの両方を分散することでユーザ数に応じて水平方向に拡張し、その層全体にわたるユーザの分配を実現しています。各アプリケーション・サーバはユーザの要求を処理し、自動的にデータ・サーバと同期された状態に維持される独自のデータベース・キャッシュを保持します。一方、データ・サーバはすべてのデータの格納と管理を処理します。アプリケーション・サーバとデータ・サーバ間の中断された接続は、停止の長さに応じて自動的に回復またはリセットされます。

分散キャッシュを使用すると、各アプリケーション・サーバは、データの作業セットをそれぞれ独自に保持できます。これにより、単一のサーバ上に作業セット全体を格納するために、費用のかかる大量のメモリを確保する必要がなくなり、安価なアプリケーション・サーバを追加して、より多くのユーザを処理することができます。分散キャッシュは、アプリケーションが、使用可能な CPU 容量によって制限される場合にも役立ちます。この場合も、単一のサーバ用に高価なプロセッサを購入するのではなく、コモディティ・アプリケーション・サーバを追加することで容量が増えます。

分散キャッシュ・クラスタ
3 つのユーザ・グループが、それぞれが独自のキャッシュを持ち、単一のデータ・サーバに対してクエリを実行する 3 つのアプリケーション・サーバに接続されます。

このアーキテクチャは、アプリケーション・サーバとデータ・サーバ間の通信に ECP を使用することで実現します。

分散キャッシュ・アーキテクチャおよびアプリケーション・サーバ層は、ユーザおよびアプリケーション・コードに対して完全に透過的です。アプリケーション・サーバを追加することにより、データを提供する既存のスタンドアロン InterSystems IRIS インスタンスを、クラスタのデータ・サーバへと簡単に変換できます。

以下のセクションでは、分散キャッシュについて詳しく説明します。

分散キャッシュ・アーキテクチャ

分散キャッシュ・アーキテクチャをよりよく理解するために、InterSystems IRIS によってデータがどのように格納され、アクセスされるのかについて、以下の情報を確認してください。

  • InterSystems IRIS は、データベースと呼ばれるローカル・オペレーティング・システムのファイルにデータを格納します。InterSystems IRIS インスタンスは、(通常) 複数のデータベースを持っています。

  • InterSystems IRIS アプリケーションは、1 つ以上のデータベースに格納されたデータの論理ビューを提供する、ネームスペースを使用してデータにアクセスします。InterSystems IRIS インスタンスは、(通常) 複数のネームスペースを持っています。

  • それぞれの InterSystems IRIS インスタンスは、データベース・キャッシュを保持します。データベース・キャッシュとは、ローカルの共有メモリ・バッファで、データベースから取得されるデータをキャッシュするために使用します。これにより、同じクエリの繰り返しインスタンスは、ストレージではなくメモリから結果を取得できるので、パフォーマンス上のメリットが非常に大きくなります。

分散キャッシュ・クラスタのアーキテクチャは、概念的には単純であり、これらの要素を以下の方法で使用します。

  • InterSystems IRIS インスタンスをアプリケーション・サーバにするには、別のインスタンスをリモート・サーバとして追加した後、そのデータベースのいずれかまたはすべてをリモート・データベースとして追加します。これにより、2 つ目のインスタンスが 1 つ目のインスタンスのデータ・サーバになります。

  • アプリケーション・サーバ上のローカル・ネームスペースを、データ・サーバ上のリモート・データベースにマッピングする方法は、ローカル・データベースにマッピングする場合と同じです。ローカル・データベースとリモート・データベースの違いは、アプリケーション・サーバ上のネームスペースに対してクエリを実行するアプリケーションにとって完全に透過的であることです。

  • アプリケーション・サーバは、ローカル・データベースのみを使用する場合と同じ方法で、独自のデータベース・キャッシュを維持します。ECP は、複数の InterSystems IRIS インスタンス間でデータ、ロック、実行可能コードを効率的に共有し、アプリケーション・サーバのキャッシュをデータ・サーバと同期させます。

実際には、複数のアプリケーション・サーバの分散キャッシュ・クラスタとデータ・サーバは、次のように動作します。

  • データ・サーバは、データの格納、更新、および提供を引き続き行います。また、データ・サーバは、ユーザが古いデータを受け取ったり、保持したりすることがないようにアプリケーション・サーバのキャッシュを同期して整合性を維持し、クラスタ全体のロックを管理します。

  • データに対する各クエリはさまざまなアプリケーション・サーバのいずれかのネームスペースで行われ、各アプリケーション・サーバはそれぞれ独自のデータベース・キャッシュを使用して、受け取った結果をキャッシュします。その結果、キャッシュされたデータのセット全体がこれらの個々のキャッシュ間で分散されます。複数のデータ・サーバがある場合、アプリケーション・サーバは、要求されたデータを格納しているデータ・サーバに自動的に接続します。また、各アプリケーション・サーバはそのデータ・サーバ接続を監視し、接続が中断した場合は、接続を回復しようとします。

  • ロード・バランサによってユーザの要求をラウンドロビン方式でアプリケーション・サーバ間で分散することもできますが、最も効果的なアプローチでは、同様の要求を持つユーザを同じアプリケーション・サーバに送ることで、キャッシュ効率を高め、分散キャッシュを最大限に活用します。例えば、医療アプリケーションでは、あるクエリ・セットを実行する医療ユーザを 1 つのアプリケーション・サーバにグループ化し、異なるセットを実行するフロントデスク・スタッフを別のサーバにグループ化できます。クラスタで複数のアプリケーションを処理する場合は、各アプリケーションのユーザを別個のアプリケーション・サーバに送ることができます。以下の各図は、単一 InterSystems IRIS インスタンスと、ユーザ接続がこのように分散されるクラスタを比較したものです。(負荷分散のユーザ要求は、状況によっては有害な影響を与える場合があります。詳細は、"負荷分散のユーザ要求の影響の評価" を参照してください。)

  • クラスタの再構成や動作の変更を別個に行うことなく、クラスタ内のアプリケーション・サーバの数を増減できるため、ユーザ数の増加に伴って、簡単に拡張することが可能です。

単一 InterSystems IRIS インスタンス上のローカル・ネームスペースにマッピングされたローカル・データベース
異なるアプリケーションを使用するユーザは、単一のキャッシュを持つ単一のサーバ上の異なるネームスペースとデータベースに対してクエリを実行します。
分散キャッシュ・クラスタ内のアプリケーション・サーバ上のネームスペースにマッピングされたデータ・サーバ上のリモート・データベース
異なるアプリケーションを使用するユーザは、それぞれが独自のキャッシュを持つ個別のアプリケーション・サーバ上のネームスペースに対してクエリを実行します。

分散キャッシュ・クラスタのデータ・サーバには、以下の役割があります。

  • ローカル・データベースにデータを格納します。

  • アプリケーション・サーバが古いデータを参照しないように、アプリケーション・サーバのデータベース・キャッシュをデータベースと同期させます。

  • ネットワーク経由のロックの分散を管理します。

  • すべてのアプリケーション・サーバ接続の状態を監視し、一定時間接続が中断された場合には対応策を実行します ("ECP リカバリ" を参照)。

分散キャッシュ・クラスタの各アプリケーション・サーバには、以下の役割があります。

  • アプリケーションが、データ・サーバに格納されたデータを要求するたびにそのデータ・サーバへの接続を確立します。

  • ネットワークから取得したデータをキャッシュ内で維持します。

  • データ・サーバへのすべての接続の状態を監視し、一定時間接続が中断された場合には対応策を実行します ("ECP リカバリ" を参照)。

Note:

分散キャッシュ・クラスタには、複数のデータ・サーバを含めることができます (ただし、これが行われるのはまれです)。InterSystems IRIS インスタンスは、データ・サーバとアプリケーション・サーバの両方の機能を同時に果たすことができますが、アプリケーション・サーバとして受信するデータのデータ・サーバとしては機能しません。

ECP 機能

ECP は、次の機能を提供することにより、分散キャッシュ・アーキテクチャをサポートしています。

  • 自動、フェイルセーフ処理。ECP は、一度構成されると、アプリケーション・サーバとデータ・サーバ間の接続を自動的に確立、維持し、アプリケーション・サーバとデータ・サーバ・インスタンス間の接続が (計画的または計画外に) 切断された場合、回復しようとします ("ECP リカバリ" を参照)。また ECP では、データ・サーバのフェイルオーバーが発生しても、その前後で実行中のアプリケーションの状態を維持することもできます ("分散キャッシュと高可用性" を参照)。

    これらの機能により、アプリケーションでデータを引き続き利用できるだけでなく、分散キャッシュ・クラスタの管理が容易になります。例えば、アプリケーション・サーバのインスタンスで操作を実行することなく、一時的にデータ・サーバをオフラインにしたり、計画的なメンテナンスの一部としてフェイルオーバーさせたりすることが可能です。

  • 混在するネットワーク :分散キャッシュ・クラスタ内の InterSystems IRIS システムは、さまざまなハードウェアおよびオペレーティング・システム・プラットフォームで実行できます。データ形式の変換が必要な場合、ECP が自動的にそれを管理します。

  • TCP/IP ベースの堅牢な Transport 層 :ECP は構成と維持が容易な、標準的な TCP/IP プロトコルをデータ転送に使用します。

  • ネットワーク帯域幅の効率的な使用 :ECP は、高性能ネットワーキング・インフラストラクチャをフルに活用します。

ECP リカバリ

ECP は、アプリケーション・サーバとデータ・サーバの間の接続の中断から自動的に回復するように設計されています。このような中断が発生した場合、ECP はリカバリ・プロトコルを実行します。リカバリ・プロトコルは、障害の性質と構成されたタイムアウト間隔によって異なります。その結果は、接続が回復されるか、何も発生しなかったかのようにアプリケーションのプロセスを続行できるか、またはリセットされ、トランザクションを強制的にロールバックし、アプリケーションのプロセスが再構築されます。

ECP 接続の詳細は、"分散アプリケーションの監視" を参照してください。ECP リカバリの詳細は、"ECP リカバリ・プロトコル" および "ECP リカバリ・プロセス、保証、および制限" を参照してください。

分散キャッシュと高可用性

ECP リカバリによって、データ・サーバへの中断されたアプリケーション・サーバ接続が処理されている間、分散キャッシュ・クラスタ内のアプリケーション・サーバは、データ・サーバのフェイルオーバーが発生しても、その前後で実行中のアプリケーションの状態が維持されるように設計されています。アプリケーション・アクティビティとフェイルオーバー・メカニズムの特性に応じて、フェイルオーバーが完了するまで一時停止する場合がありますが、その後ワークフローを中断することなく動作を続行できます。

スタンドアロンの InterSystems IRIS インスタンスと同じように、高可用性を実現するためにデータ・サーバをミラーリングし、フェイルオーバーが発生した場合に接続を自動的にバックアップにリダイレクトするようにアプリケーション・サーバを設定することもできます (アプリケーション・サーバはデータを格納しないため、ミラーリングする必要はなく、ミラーリングすることはありません)。分散キャッシュ・クラスタでのミラーリングの使用方法の詳細は、"ミラーへの ECP 接続の構成" を参照してください。

"高可用性を実現するためのフェイルオーバー方法" で詳しく説明されているその他のフェイルオーバー方法は、分散キャッシュ・クラスタでも使用できます。データ・サーバに使用するフェイルオーバーの方法に関係なく、アプリケーション・サーバは、フェイルオーバーに続いて再接続してその状態を回復し、障害発生前の場所からアプリケーションのプロセスを続行できます。

関連項目

FeedbackOpens in a new tab