2010-10-11 7 views
0

J'utilise mon application sur un groupe de serveurs Tomcat non groupés. Il sert des services web de restauration. Selon le paradigme reposant, chaque appel est sans état.Comment exécuter des opérations à l'échelle du système sur un cluster de serveurs d'applications?

Dans cet environnement, je souhaite que l'application examine régulièrement la base de données pour rechercher les changements d'état et prendre des mesures. Puisque l'une des actions consiste à déclencher un e-mail, je souhaite m'assurer que je ne vérifie pas l'état d'un enregistrement particulier plus d'une fois par période de révision. Je sais que la messagerie aiderait dans cette situation, mais je ne comprends pas exactement comment. L'événement périodique peut être généré par chaque instance de l'application. Existe-t-il un moyen de désactiver les messages similaires dans une file d'attente de messages? Quel outil fonctionne le mieux pour ce problème?

+1

Un ami a recommandé que j'utilise Quartz pour gérer ce problème. Cela ressemble à un bon ajustement. –

Répondre

0

Vous devriez être en mesure d'enregistrer des 'identifiants' dans une file d'attente de messages. Si vos applications écoutent la file d'attente, chaque message sera récupéré par l'un des serveurs et ce serveur peut vérifier la présence de cet identifiant. La question est la génération des messages initiaux. Vous aurez besoin d'un processus d'alimentation qui interrogera les enregistrements à examiner, puis placera les messages dans la file d'attente.

Bien sûr, si vous faites cela, vous pouvez juste POST à ​​vos restlets par ID ou plusieurs ID et les avoir au travail de cette façon. Ce n'est pas asynchrone, mais cela n'a pas vraiment besoin d'être asynchrone si vous essayez simplement de répartir la charge entre les nœuds. Si vous avez un équilibreur de charge devant vos nœuds, vous pouvez simplement POSTER votre demande de révision à l'équilibreur de charge et répartir les demandes entre les serveurs.

Si vous ne pouvez pas utiliser d'identifiants d'enregistrement spécifiques ... choisissez un moyen naturel de partitionner vos données et appuyez sur cette touche de partition comme si vous utilisiez des identifiants. En fonction de la taille de l'ensemble de données, vous pouvez appuyer sur «Ville/État» ou «Deux premières lettres de nom» ou «région» ou tout autre élément qui divise votre ensemble de données en petits morceaux gérables.

Questions connexes