0

一種のメモリ内データベースを構築する必要があります。EhCache や HazelCast などのメモリ内データ管理ソリューションを使用できることはわかっていますが、それらをシステムにプラグインせず、Weblogic セッション レプリケーションを使用して達成することに傾倒しています。

以下は私の質問です:

  • これは実際にはユーザー セッションではないため、アプリケーションの起動時にセッションを作成し、Weblogic セッション レプリケーション機能を使用してセッション レプリケーションを実現できますか?
    • または、Weblogic アプリケーション コンテキストのレプリケーションを検討する必要がありますか?それは可能ですか?
  • WL セッション レプリケーションを利用するには必ず Weblogic クラスタが必要ですか、それともそれがなくても実行できますか?
  • 4 つの WL サーバー (異なるボックスで実行) があり、すべてが同じクラスター内にあるとします。いずれかのノード/サーバーがデータを取得してセッションに入れると、他のすべてのノード/サーバーで自動的に複製されますか?
  • 3 つのノード/サーバーをシャットダウンしたとします。これらのノードの再起動時に、稼働中のノードは自動的に開始ノードにデータをプッシュしますか?
4

1 に答える 1

3

Web セッションをインメモリ データベースとして使用しないでください。ほとんどのインメモリ データベースでは、ノード間でのデータの分散方法を微調整できます。また、トランザクションとリカバリのサポートも備えています。Web セッションは、ノード間での Java オブジェクトの非常に単純なレプリケーションであり、そこに重要なデータを保持することさえすべきではありません。Web セッション オブジェクトでデータを複製する主な目的は、サーバーがダウンした場合に、ユーザーが別のサーバーにログインしたままにし、その作業 (つまり、ステートフルな Web UI) を続行することです。

使用しているWebLogicのエディションによっては(取得したライセンスに基づいて)、Oracle In-memory Data GridソリューションであるCoherenceにすでにアクセスできる場合があります。

以下で適切に回答されたOPの質問を更新します。

これは実際にはユーザー セッションではないため、アプリケーションの起動時にセッションを作成し、Weblogic セッション レプリケーション機能を使用してセッション レプリケーションを実現できますか?

  • または、Weblogic アプリケーション コンテキストのレプリケーションを検討する必要がありますか?それは可能ですか?

(Web アプリの) アプリケーション スコープ内のオブジェクトはレプリケートされません。JNDI を使用してそれを行うこともできますが、これらの方法はどちらもお勧めしません (何らかの方法でセッションにプッシュするためのスタートアップ リスナーを含む)。

WL セッション レプリケーションを利用するには必ず Weblogic クラスタが必要ですか、それともそれがなくても実行できますか?

はい、セッション レプリケーションが必要な場合は、WebLogic クラスタが必要です。クラスターの使用以外にもいくつかの要件があります。WLS 12.2.1 Docs のドキュメントの章6 Failover and Replication in a Clusterを参照してください。

4 つの WL サーバー (異なるボックスで実行) があり、すべてが同じクラスター内にあるとします。いずれかのノード/サーバーがデータを取得してセッションに入れると、他のすべてのノード/サーバーで自動的に複製されますか?

すべてのサーバーではなく、一部のサーバーのみです。レプリケーション グループおよびその他のオプションの使用の詳細については、ドキュメントを参照してください。

3 つのノード/サーバーをシャットダウンしたとします。これらのノードの再起動時に、稼働中のノードは自動的に開始ノードにデータをプッシュしますか?

それほど単純ではありませんが、要するに、思い通りに機能しません。セッションは、WebLogic クラスタ内のすべてのノードに複製されるわけではありません。十分な数のノード (プライマリ ノードとセカンダリ ノード) に対してレプリケーションが行われます。12.2.1 の WLS ドキュメントに関する詳細情報。

繰り返しますが、HTTP セッション レプリケーション機能をメモリ内データベースとして使用しないでください。そのために設計されたものではありません。「ある種のメモリ内データベースを構築する」代わりに、それを使用してください。

しかし、本当にHTTPセッションを「メモリー内データベース」として使用したい場合は、少なくともWebLogicのレプリケーション・メカニズムとしてCoherence*Webを使用するようにしてください。

于 2016-02-03T22:53:38.787 に答える