ご存知のとおり、JSP アプリケーションには、複数の HTTP リクエストを処理するために Session オブジェクトの概念があります。 これは、HTTP プロトコルがステートレスであり、複数の HTTP リクエストにわたってユーザーの状態を維持するためにセッションが使用されるためです。
単一の Web サーバー構成では問題はありませんが、JSP アプリケーションを実行するマルチサーバーの負荷分散された Web ファームを使用するとすぐに、セッションをどこに保持するかという問題に直面します。 これは、ロード バランサーが理想的には各 HTTP リクエストを最も適切な Web サーバーにルーティングすることを好むためです。 ただし、セッションが XNUMX つの Web サーバー上でのみ保持されている場合は、ロード バランサーのスティッキー セッション機能を使用する必要があり、指定されたセッションに関連するリクエストは、そのセッションが存在する Web サーバーにのみ送信されます。
これは、他の Web サーバーがアイドル状態にある場合でも、そのユーザーのセッションがその Web サーバー上に存在するため、XNUMX つの Web サーバーに負荷がかかる可能性があることを意味します。 これは当然、スケーラビリティを妨げます。 さらに、Session オブジェクトを XNUMX つの Web サーバー上にのみ保持すると、その Web サーバーが何らかの理由でダウンした場合にセッション データが失われることになります。
このデータ損失の問題を回避するには、セッションを複数の Web サーバーにレプリケートするメカニズムが必要です。 ここで、主要なサーブレット エンジン (Tomcat、WebLogic、WebSphere、および JBoss) はすべて、何らかの形式のセッション永続性を提供します。 これらには、何らかの形式のセッション レプリケーションも含まれていますが、すべてに問題があります。 たとえば、ファイルベースと JDBC の永続性は遅く、パフォーマンスとスケーラビリティの問題を引き起こします。 また、セッション レプリケーションは、すべてのセッションをすべての Web サーバーに複製するため、フォールト トレランスは XNUMX つのコピーのみで実現できるにもかかわらず、XNUMX つ以上の Web サーバーがある場合にセッションの不要なコピーを作成するため、非常に弱いものです。
このような状況では、次のような Java 分散キャッシュが必要です。 NCache これは、Web クラスター内の複数のサーバー間でのセッションの永続化が非常にインテリジェントに、スケーラビリティを妨げることなく行われるようにするための最善の策です。 NCache には、「パーティション レプリカ」と呼ばれるキャッシュ トポロジがあり、レプリケーションを通じて高可用性とフェイルオーバーを提供するだけでなく、データ パーティショニングを通じて大規模なインメモリ セッション ストレージも提供します。 データ パーティショニングを使用すると、キャッシュをパーティションに分割し、各パーティションをキャッシュ クラスター内の異なるキャッシュ サーバーに保存することで、大量のデータをキャッシュできるようになります。
NCache パーティション レプリカ トポロジでは、各ノードのセッション データがクラスター内の他の XNUMX つのノードにのみレプリケートされます。このアプローチにより、信頼性を損なうことなく、すべてのサーバー ノードでセッション データをレプリケートすることによるパフォーマンスへの影響が排除されます。
さらに、Web サーバー (Apache、Tomcat、Weblogic、WebSphere) によって提供されるセッション永続性は、Web クラスターのリソースとメモリを使用します。 このアプローチでは、クライアント要求の処理を担当する Web クラスター ノードがセッション レプリケーションとそのメモリ内ストレージという余分な作業も処理するため、アプリケーションのパフォーマンスが妨げられます。 一方、実行できます NCache Web クラスターの一部以外の別のボックス上にあります。 これにより、Web クラスターのリソースを解放でき、Web クラスターはそれらのリソースを使用して、より多くのクライアント要求を処理できるようになります。
JSPセッションの永続性については、 NCache セッションモジュールを実装しました NCacheJava フィルターとしての SessionProvider。 NCache JSP サーブレット フィルターは、リクエストとレスポンスを動的にインターセプトし、バックグラウンドでセッションの永続化を処理します。 また、JSP アプリケーション コードを変更する必要はありません。
ここにサンプルがあります NCache 使用するためにアプリケーション デプロイメント記述子で定義する必要がある JSP サーブレット フィルター構成 NCache JSP セッションの永続性の場合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<filter> <filter-name>NCacheSessionProvider</filter-name> <filter-class> com.alachisoft.ncache.web.sessionstate.NSessionStoreProvider </filter-class> </filter> <filter-mapping> <filter-name>NCacheSessionProvider</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <init-param> <param-name>cacheName</param-name> <param-value>PORCache</param-value> </init-param> <init-param> <param-name>configPath</param-name> <param-value>/usr/local/ncache/config/</param-value> </init-param> |
したがって、 NCache パフォーマンスの向上とスケーラビリティとともに、Web クラスターでセッションの永続性を実現する、より優れたメカニズムを提供します。
だから、完全に機能する60日間の試用版をダウンロードしてください NCache Enterprise 自分で試してみてください。