1

私は、すべてのエントリを呼び出すEntryListenerHazelcastの実験を行っています。Map.size()

これが悪い考えであるかどうか、およびクラスター全体の操作であるため、パフォーマンスの問題になる可能性があるかどうかを知りたいです。

現在、5〜10kの要素と2つのノードのパフォーマンスの低下は見られません。

ありがとう、

4

2 に答える 2

2

これは非常に悪い考えです。EntryListener は、Hazelcast の内部スレッドによって呼び出されます。そして map.size() を呼び出すことで、かなり高価な操作を行い、スレッドをブロックしています。Hazelcast のスレッド内で分散操作を呼び出すことはお勧めしません。イベントを受け取り、独自のスレッドで map.size を呼び出す必要があります。これは、あなたが管理する ExecutorService に runnable を送信することで実行できます。ここでは、Hazelcast の分散 ES の実装ではなく、jucExecutorService を意味することに注意してください。

于 2012-07-20T08:55:40.697 に答える
0

HazelCast での Map の実装についてはよくわかりません。しかし、一般的なガイドラインの 1 つは、コンテナーが追加された要素をカウントするために別の変数 (つまり、java.util.collection ライブラリーの多くのクラスにあるサイズ) を保持している場合、パフォーマンスの低下に問題はないということです。 . しかし、コンテナーが追加された要素を反復処理してカウントし、サイズを返す場合、コンテナーに非常に大きな no があると、パフォーマンスが大幅に低下する可能性があります。その中の要素の。HazelCast の Map 実装を調べて、自分で決めることができるかもしれません。

于 2012-07-20T08:26:52.840 に答える