2010-08-19 16 views
3

Je travaille actuellement sur une migration d'une application web à exécuter dans un cluster. Cette application utilise des caches. Certains de ces caches sont rechargés au cas où l'utilisateur enregistre quelque chose. Je voudrais informer les autres nœuds du cluster à ce propos, afin que tous les nœuds rafraîchissent leurs caches.Comment implémenter la synchronisation du cache dans l'environnement de cluster Tomcat 6.0?

Il semble que le serveur Tomcat intègre une messagerie de groupe. (Tribes) Je me demande si je peux utiliser cette messagerie pour ma tâche et comment faire en sorte que l'écouteur d'événements soit exécuté toute la journée.

Sincères salutations Michael

+0

Comment le cache actuellement mis en œuvre? EhCache? Ou quelque chose d'écrit à la main? – skaffman

+0

Le (s) cache (s) sont manuscrits et utilisent en partie le contexte servletcontext ou le système de fichiers ainsi que les champs statiques. – Michael

Répondre

0

Il est possible de l'utiliser et il n'y a pas besoin de lancer un fil ou similaire. L'envoi d'instances de classe nécessite un jar de la classe de message dans le répertoire lib de tomcat.

acclamations Michae

0

Vous pouvez utiliser Hazelcast sujet. C'est un pub/sous-messagerie très léger. Chaque nœud écoutera le sujet. Lorsque l'utilisateur enregistre sur n'importe quel noeud, il suffit de mettre un message "REFRESH". A réception chaque nœud peut faire ce que vous voulez. Voici le code pour le faire:

String REFRESH = "REFRESH"; 
ITopic<String> topic = Hazelcast.getTopic("myTopic"); 
topic.addMessageListener(new MessageListener<String>() { 
     public void onMessage(String msg) { 
      if(REFRESH.equals(msg){ 
      //do refresh 
      } 
     } 
    }); 

// lorsque l'utilisateur enregistre STH.
topic.publish (REFRESH);

0

Si vous utilisez CACHE manuscrit, que vous pouvez synchroniser le cache B/W tous les nœuds du cluster en utilisant la diffusion/réception de message, vous pouvez utiliser JGROUP pour cela.

Ex: Un noeud cache de mise à jour juste message général coulé à un autre nœud à remplir (refresh) leur cache