2011-12-05 1 views
1

私は2ノードと永続性のためのDBを持つヘイルキャストクラスターを持っています。私は2つのノードを順番に開始します。最初のノードは、DBからエンティティを読み取り、対応するマップ(entityMap)を構築します。 2番目のノードを起動すると、EntityMapStore.store()メソッドが2番目のノードでかなり頻繁に呼び出されます。 私はちょうど私がマップに何かを入れていないので、開始すると、これがどうしたらいいのだろうと思っています。または私は何かを間違ってやったのですか?あなたは何も悪いことをしていないput操作を呼び出す以外にHazelcastマップ要素はいつ永続化されますか?

<map name="entityMap"> 
     <backup-count>1</backup-count> 
     <map-store enabled="true"> 
      <class-name>EntityMapStore</class-name> 
      <write-delay-seconds>1</write-delay-seconds> 
     </map-store> 
    </map> 
+0

また、データのバランスがどのようになっているかという疑問も出てきます。データはDBに格納されるので、データはどのように配布されますか?データが書き込まれている間に、1つのノードにはメモリ内のコピーがあり、別のノードにはバックアップコピーがありますか? –

答えて

4

番号:

hazelcast.xmlの対応する部分は次のようになります。 write-delay-seconds > 0があるため、エントリが2番目のノードに移行すると、2番目のノードのエントリに対してstore()が呼び出されます。これは現在の動作ですが、これはcreate an issueにすると、Hazelcastチームは移行された不完全なエントリに対してstore()を呼び出さないようにしてこの動作を強化できます。

+0

答えをありがとう。あなたが言ったように、write-delay-seconds = 0を2番目のノードに設定した場合、 store()は2番目のノードで呼び出されません。しかし、なぜですか?私は、各エンティティの移行後にstore()が呼び出されると考えていました。 –

+0

write-delay-seconds = 0の場合、store()がすでに最初のノードで呼び出されていることを意味します。 2番目のノードで呼び出す必要はありません。ヘーゼルキャストは、データストアが集中化されていることを前提としています(SQLデータベースのように)。 –

関連する問題