1

JBoss AS 5.1 のクラスターにデプロイされた Java アプリケーションがあり、キャッシュに大量 (> 3 GB) のデータが必要です。現在、サーバー クラスタには 2 つのノード (別々のマシン) しかありません。具体的な要件は次のとおりです。

  • どちらのノードもデータをキャッシュにロードする必要はありません (つまり、レプリケーションが存在するか、キャッシュが別のサーバーに存在する必要があります)。
  • データが期限切れになることはありません。

    上記の要件は両方とも、アプリケーションにとって非常に重要です。この二つを念頭に置いてご提案いただければ幸いです。 3 番目の要件も追加する必要があります。

  • 使いやすさ

    アプリケーションは当初 Hashmap を使用していました。レプリケーションとスレッド セーフ機能のために、ハッシュマップを JBoss Cache 3.2.1 に置き換えてみました。しかし、JBoss Cache のパフォーマンスにはあまり満足していません。また、キャッシュにデータをロードすると、8 Gig の RAM がほぼ完全に使用されます (そのほとんどはキャッシュ エントリによって使用されます)。

    この種のキャッシング シナリオを自分で処理したことのある人の経験を聞きたいです。お時間をいただきありがとうございます。

  • 4

    3 に答える 3

    2

    GigaSpaces を使用して試すことができます XAP データグリッドは複製されたキャッシュです。非常に高性能です。

    http://www.gigaspaces.com/datagrid

    于 2012-05-20T17:04:08.123 に答える
    -2

    私は以前にこの問題を「解決」しました(作業コード、お見せできません)...しかし、私はあなたにこれだけを伝えることができます:

    • ボリュームが大きいと、HashMap のオーバーヘッドで大量のメモリが使用されます。
    • java.util.* クラスを配列のスマートな使用に置き換えることで、多くのメモリを節約できます。
    • メモリ割り当てがあるたびに、GC でそのメモリをスキャン/収集する必要があるため、メモリを節約するとパフォーマンスも向上します。

    可能な限り、配列を使用してください....

    編集: どうやら Hash Maps の概念は忘れられているようです.... HashMap の Java 実装は、それが唯一の方法であると人々に信じさせましたか? 構造化された配列のセット、ハッシュ関数、およびバイナリ ソート.... すべての基本構造... http://en.wikipedia.org/wiki/Hash_table

    キーを追加する 1 つの配列。値を格納するための並列配列と、キー配列への高速検索を行うための int ベースのハッシュ テーブル...

    コンピューター サイエンス - おそらく 2 年目 ;-)

    もう一度編集: ここの JDOM プロジェクトで説明したコア概念に慣れました: https://github.com/hunterhacker/jdom/blob/master/core/src/java/org/jdom2/StringBin.java

    于 2012-05-19T00:10:41.630 に答える