とのJavaWebセッション NCache
セッションズ 個別のユーザーのデータを保存する方法です。 Webアプリケーションをホストするサーブレットコンテナと呼ばれる、アプリケーションサーバー上で作成されたJavaセッションオブジェクトは、JavaサーブレットまたはJava Server Page(JSP)内に含まれます。 Apache Tomcat、WildFly、Oracle WebLogic Server (NAIST) と IBM WebSphere アプリケーション サーバー .
たとえば、Tomcat Webサーバーは、TomcatWebサーバークラスターを介したセッションレプリケーションを通じてセッション処理を提供します。 セッションレプリケーションは、データとメモリのオーバーヘッドを引き起こし、速度が低下し、パフォーマンスとスケーラビリティが不足する可能性があります。
したがって、 NCache ユーザーが負荷分散されたWebファームで問題なくアプリケーション内にJavaセッションを保存できるより良いオプションを提供します。
スケーラブルなJavaセッション管理 NCache ダイナミック クラスター。
サポートされている Java サーブレット コンテナと仕様
NCache 以下で説明するように、Webアプリケーションを簡単にホストできるさまざまなタイプのサーブレットコンテナを使用するオプションをユーザーに提供します。 NCache Java Servlet 3.1+ 仕様に準拠しています。
Apache Tomcat: これは、Java サーブレットと Java サーバー ページのオープン ソース実装であり、Java コードを実行できる「純粋な Java」HTTP Web サーバー環境も提供します。スティッキー セッションによるセッション処理も提供します。
WildFly: WildFly は、Red Hat が開発した軽量で高性能なオープンソースの Java EE アプリケーション サーバーです。
Oracle WebLogic Server: Oracle WebLogic は、エンタープライズ アプリケーションの開発、展開、実行に使用される Java EE アプリケーション サーバーです。
IBM WebSphere アプリケーション サーバー: IBM WebSphere Server は、エンタープライズ アプリケーションの構築、展開、管理のためのランタイム環境を提供する Java EE アプリケーション サーバーです。
のJavaセッションモジュールの設定 NCache
Javaセッションを設定するには、%NC_Home%/configにある「session.xml」ファイルを変更する必要があります。 NCache フォルダ。 以下はそれを行うコードです NCache。 ライブラリの追加、フィルタの定義、サーブレットコンテナを使用したアプリケーションのデプロイの詳細については、を参照してください。 ライブラリの追加とフィルターの定義 助けて。 NCache 標準の Java サーブレット フィルタ API を活用することで、アプリケーション ロジックを変更することなく、セッション管理呼び出しをインターセプトし、分散キャッシュにリダイレクトすることができます。
<?xml version="1.0" encoding="UTF-8"?>
<!--for single regional session provider-->
<servlet-session-config>
<cache id="myPartitionedCache"/>
<log log-props="log4j.properties"/>
<locking enable-session-locking="true" retries-count="2" retry-interval="500ms" lock-timeout="36000ms" empty-session-when-locked="false"/>
</servlet-session-config>
なぜ使うの? NCache Java セッション管理用ですか?
NCache Javaアプリケーションがセッションを永続化するための「コード変更なし」オプションをユーザーに提供します。 NCache 分散キャッシング。 アプリケーションが負荷分散されたWebサーバーファームで実行されており、セッションの永続性のために信頼性が高くスケーラブルなストレージが必要な場合は、 NCache 次の利点があります。
最高のパフォーマンス: NCache 最速の応答時間を提供し、パフォーマンスを向上させます。 NCache コンパクト シリアル化により、Java オブジェクトは標準の Java シリアル化よりも大幅に高速にシリアル化され、CPU オーバーヘッドとネットワーク遅延が大幅に削減されます。
高可用性: NCache 単一障害点のない強力な分散キャッシュクラスターを提供します。 高可用性 つまり、アプリケーションを停止せずにキャッシュを追加または削除できます。
非常に信頼性が高い: NCache ユーザーは、指定されたトポロジに従って、Javaサーブレットセッションを複数のサーバーに複製できます。パーティションレプリカなどのトポロジでは、セッションデータがノード間でミラーリングされるため、個々のキャッシュサーバーに障害が発生した場合でも、信頼性とパフォーマンスを損なうことなく100%の稼働率を維持できます。そのため、何らかの理由でキャッシュサーバーがダウンした場合でも、ユーザーはセッションデータを失うことはありません。
トポロジを介した優れたセッションレプリケーション: NCache 必要に応じてセッションを永続化するためのさまざまなキャッシュトポロジを提供します。 たとえば、 パーティション化された複製トポロジ 信頼性とスケーラビリティを向上させます。
線形スケーラビリティ: NCache、メモリ内分散 線形にスケーラブル グリッドは、高負荷を処理する機能を備えているため、セッションアプリケーションは可能な限り多くのスケーラビリティを実現できます。
複数のリージョンにまたがる Java セッションを管理する方法
分散データセンター間でセッションを管理すると、多くの場合、遅延と同期の課題が発生します。 NCache 柔軟なマルチサイトパーシステンスオプションを提供することでこの問題を解決します。地理的に離れた複数のWebファームにまたがるJavaサーブレットセッションを管理するには、 NCache 次の方法でマルチサイトセッションの永続性を提供します。
Java WebセッションWANレプリケーション: NCache ユーザーがWANを介してすべてのJavaセッションを別のリージョン(データセンター)に複製できるようにします。 ブリッジトポロジ の特徴 NCache。 これにより、リージョンがダウンした場合でもJavaセッションが失われることはありません。
マルチサイトJavaWebセッション: 主に高帯域幅の消費とパフォーマンスの問題の可能性があるために、ユーザーがWAN全体でセッションを複製したくない場合は、次の概念を使用することを選択できます。 マルチサイトJavaセッションのサポート 、の機能 NCache。 このアプローチでは、各リージョンが個別のキャッシュを構成でき、すべてのキャッシュに独自のクライアントセット(Javaサーブレット)があります。 セッションはサイト間で複製されませんが、代わりに作成場所に保持されます。
これにより、XNUMXつ以上のアクティブな個別のリージョンを作成でき、ユーザーはほとんどのトラフィックを独自のリージョンに保持できます。 同様に、ユーザーが何らかの理由でリージョンをダウンさせても、そのリージョンは他のリージョンからアクセスできるため、問題は発生しません。
の高度な機能 NCache JavaWebセッション
のJavaWebセッション NCache JavaWebセッションによって提供されるすべての標準機能を実装します。 さらに、他の重要な状況を処理するためにいくつかの高度な機能を実装しています。
セッションの有効期限: NCache セッションの有効期限を処理し、指定されたセッションタイムアウトの間、キャッシュからセッションを削除します。 同様に、サーブレットコンテナを介してセッションタイムアウト値を指定できます。 NCache 内部的にその間隔を使用して、キャッシュからセッションを期限切れにします。
複数のセッション要求とデータの整合性の処理: 並列リクエストによってセッションが変異する可能性がある状況を回避するには、 NCache XNUMXつの並列要求が同じセッションを変更できないようにロックメカニズムを提供します。 次の方法で「session.xml」ファイルで指定できます。
<servlet-session-config>
<locking enable-session-locking="true" retries-count="2" retry-interval="500ms" lock-timeout="36000ms" empty-session-when-locked="false"/>
</servlet-session-config>
セッションデータのシリアル化の処理: JavaオブジェクトをJavaサーブレットセッションに配置し、それらをアウトプロセスで保存した後、Javaサーブレットセッション全体をシリアル化する必要があります。 NCache と呼ばれる通常のJavaシリアル化と比較してより高速なシリアル化を提供します コンパクトなシリアル化 。 これにより、Javaアプリケーションの速度が大幅に向上します。
次はどうする?
よくある質問(FAQ)
NCache 低速でディスク容量の大きいデータベースやオーバーヘッドの大きいサーブレットレプリケーションからメモリ内の分散キャッシュにセッションデータを移動することでパフォーマンスが向上します。 NCache コンパクト シリアル化により、Java オブジェクトは標準の Java シリアル化よりも高速にシリアル化され、トラフィック量の多い環境での CPU サイクルとネットワーク遅延が大幅に削減されます。
Yes.
NCache 標準のJavaサーブレットフィルタAPIを活用することで、「コード変更なし」の統合を実現します。session.xml設定ファイルを変更して、 NCache クラスターでは、フィルターがセッション管理呼び出しを自動的にインターセプトし、分散ストアにリダイレクトします。
並列リクエスト(AJAX呼び出しなど)中のデータ損失や「ダーティリード」を防ぐため、 NCache 堅牢なセッションロック機構を実装しています。これにより、あるリクエストがセッションオブジェクトを変更している間、他のリクエストはキューに入れられたり、特定のロック設定に基づいて処理されたりするため、厳密なデータ整合性が維持されます。
Yes.
NCache ブリッジトポロジによるWANレプリケーションを通じて、地理的に分散したWebファームをサポートします。セッションデータを複数のデータセンターに複製することで、高可用性を実現します。また、マルチサイトJavaセッションを使用することで、トラフィックを特定の地域にローカルに保ちながら、データセンターのダウン時に別のサイトへのフェイルオーバー機能を維持することも可能です。