2015-07-21 1 views
0

Nous avons utilisé Hazelcast 2.6.8 et mis à jour vers 3.5. La raison de la mise à niveau était ce qui semble être des problèmes intermittents avec les données de mise en cache. Cependant, la mise à niveau n'a pas résolu le problème.Perte de données dans Hazelcast Map lorsque certains nœuds du cluster sont redémarrés

Nous essayons de mettre en mémoire cache 100 objets java plain dans un Hazelcast IMap, que nous mettons en cache à partir d'une base de données externe. Les objets mis en cache sont partagés à travers le cluster via ConcurrentMap de Hazelcast. Nous avons un cluster de 6 nœuds et chaque fois que nous arrêtons et démarrons 2 de ces 6 nœuds, nous constatons que certains des objets java sont manquants, son occurrence avec le nombre de manquant varie, mais quand il manque, le nombre est habituellement d'environ 90 objets sur la carte plutôt que 100.

Initialement propriété de comptage de sauvegarde a été mis à 3, mais en raison de défaillances nous a augmenté à 6.

la méthode imap utilisée est la méthode de LOADALL pour récupérer les données. Voici la configuration que nous utilisons, StoreClass implémente le Hazelcast MapStore:

<map name="objectsMap"> 
<backup-count>6</backup-count> 
<near-cache> 
<time-to-live-seconds>0</time-to-live-seconds> 
<max-idle-seconds>6000</max-idle-seconds> 
<eviction-policy>LRU</eviction-policy> 
<max-size>5000</max-size> 
<invalidate-on-change>true</invalidate-on-change> 
</near-cache> 

<map-store enabled="true"> 
<class-name>StoreClass</class-name> 
<write-delay-seconds>0</write-delay-seconds> 

Répondre

0
<invalidate-on-change>true</invalidate-on-change> 

Si vrai, tous les membres écoutent les changements dans leurs entrées mises en cache et expulsent l'entrée quand il est mis à jour ou supprimé.

Changez-le en faux et essayez. Ça marche.

Maintenant le <backup-count>6</backup-count> peut être mis au nombre inférieur requis. Suggérer de ne pas avoir de grands nombres comme back-up. 1 ou 2 devrait suffire à l'exigence.