問題タブ [hazelcast-imap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ヘーゼルキャストスプリング構成
<hz:map>
で作成されたタグと、セグメントapplicationContext
で定義されたタグの違いは何ですか?<hz:config>
それらはどのように関連していますか?
私は、タイプ IMap の Bean が作成<hz:map>
さapplicationContext
れることを認識しており、ない場合は作成されません<hz:map>
。
しかし、定義された Bean があり、その後<hz:map>
hazelcast 構成の下に同じ名前を持つ場合、次の構成は何をしますか?
session - Tomcat Hazelcast セッション ストア セッション属性の消失
AWS で Tomcat クラスターをセットアップしようとしています。AWS は IP マルチキャストをサポートしていないため、オプションの 1 つはDB を使用した Tomcat クラスター化です。
それはよく理解されていますが、DB 呼び出しに関連するパフォーマンスの低下により、私は現在、Hazelcast をセッション ストアとして検討しています。Web アプリに他のフィルターがあり、それらが多少干渉しているため、現在の Hazelcast フィルター アプローチはうまくいきません。より適切でクリーンなアプローチは、PersistenceManager をカスタム ストア実装で構成し、Tomcat/ conf context.xml で、構成セクションを以下に示します。
セッションは Hazelcast インスタンスに保存されており、Tomcat からのトレースは以下のとおりです。
上記のトレースは、ストアの実装によってオーバーライドされた 'save' メソッドからのものであり、コードは以下のとおりです。
「sessionStore」は Hazelcast 分散マップです。
ストアの対応する「ロード」メソッドは次のとおりです。
最も興味深いことの 1 つは、「store」メソッドがデフォルトの 60 秒間隔で呼び出される一方で、「load」メソッドが呼び出されず、保存されたセッション属性がしばらくすると失われるという正味の影響があることです。 、これは最も珍しいことです。技術的には、セッションにバインドされた新しいセッション属性は、「save」メソッドが呼び出され、マネージャーが 5 秒ごとにスワップアウトするように構成されていると、Hazelcast に保存されます。
ただし、セッション属性は失われ (新しいもの)、古いものはまだ残っています。しかし、それが何であれ、「ロード」メソッドは呼び出されません (少なくともトレースは表示されません)。
これに関するいくつかの助けは本当にありがたいです。
java - 新しいキーと値のペアを Hazelcast に追加する
クリスマス プレゼント用の ArrayList と受信者用の別の String を持つクリスマス リスト オブジェクトがあるとします。このクライアントには次の方法があります。
ここで、"Amy" の新しいリストを追加したいとします。IMap には "Amy" に一致するキーが含まれていません。このようなエントリを追加するにはどうすればよいですか? 上記はほとんど疑似コードですが、問題は私に終わりのない問題を引き起こしました。ドキュメントもあまり役に立ちませんでした。Hazelcast の新しい IMap は、デフォルトでは空になると思います。
基本的に、Hazelcast IMap で新しいキーと値のペアを初期化しようとしています。私はchristmasListImap.put()とchristmasListImap.set()を使ってみましたが、どちらもうまくいかないようです。少なくとも、IMap が認識する新しいキーを追加する方法を知る必要があります。
java - Java 分散アプリケーションによる一括更新と単一の非同期更新
私たちが実際に直面しているアーキテクチャの問題について質問したいと思います。
- 複数のサーバーに分散されたアプリケーションがあります
- activeMQ を介してデータを消費しています。
- 同期を維持する必要がある Price というオブジェクトがあります。
- このオブジェクトは複数回受け取ることができます。
- 価格には「lastUpdate」というフィールドがあり、最新の「lastUpdate」で価格を保存/更新する必要があります。
- 最後に受け取った価格の lastUpdate が以前のものより新しいという保証はありません。
すべてを同期させるには、3 つの方法があります (すべてを使用する必要があります)。
- 価格の非同期更新/挿入を受け取ることができます (リスナーを使用)
- 15 分ごとに、過去 15 分間に変更されたすべての価格を送信するようプロデューサーに依頼します (予定されたタスク)
- 1時間ごとにすべての価格を更新します(schduledTask)
使用された技術:
- バスとしての ActiveMQ
- 挿入前に同期する分散マップとしての Hazelcast
- JPA
現在の仕組み: 非同期価格の追加/更新が到着するたびに、以下を実行します。
これは、更新/永続化する各価格に対して行っていることです (単一および一括更新/挿入メソッドの両方がこれを呼び出します)
問題は、タスクの完了に 4/5 秒 (平均 100,000 の価格を処理) したいのに、完了するのに時間がかかる (30/40 秒) ことです。私たちが使用しているロジックには、パフォーマンスを改善する方法がないようです。そのため、データの同期を維持する方法を変更する必要があると思います...何か提案はありますか?
編集:
pveentjer の提案に従って、 EntryProcessor クラスを拡張して、コンストラクターで更新される価格のマップを渡すことができるようにしました。
}
EntryProcessor では、キーの値を送信するだけでよいことがわかりました。ただし、price.getId() のみをキーとして使用します。
caching - 構成されたエントリ数/サイズに達すると、haselcast キャッシュをフラッシュできません
ヘーゼルキャストのキャッシュをクリアしたかった。そのため、キャッシュが最大エントリまたは最大ヒープ サイズに達したら、それをファイルにフラッシュします。
hazelcast.xml の構成
テストコード
entryEvicted では、3 番目のエントリ オブジェクトのみを取得しています
最大サイズに達したら、キャッシュの内容をファイル/データベースにフラッシュする方法はありますか?
hazelcast - Hazelcast の高密度メモリ (ネイティブ メモリ サイズ制限)
Hazelcast 3.5.3 および 3.6 エンタープライズ バージョンを使用して高密度メモリを実装しています。これにより、最初にプールされたネイティブ メモリが初期化され、次にオフ ヒープ メモリが初期化されます。これは正常に動作し、Hazelcast 管理コンソールで確認できるネイティブ メモリを作成しています。
私の質問は次のとおりです: ネイティブ メモリの上限を設定するにはどうすればよいので、Hazelcast の 2 つまたは 1 つのインスタンスを開始すると、ネイティブ メモリの割り当て中にその上限を超えません。
事前にご回答いただきありがとうございます。
ありがとう