2017-09-14 7 views
0

J'ai une question liée à Apache Storm. Actuellement, nous utilisons des serveurs pour implémenter Storm, notre application nécessite des jetons facebook/Twitter. Nous voulons donc concevoir comme ceci: chaque jeton appartient à un serveur spécifique, quand un boulon a reçu un tuple, il demandera un jeton qui est spécifiquement pour cette instance en cours d'exécution, ceci pour empêcher le blocage de jetons si différents serveurs utiliser le même jeton en peu de temps.Comment savoir quel serveur tempête/verrou fonctionne

Tout le monde sait comment réaliser de cette façon, est-il possible de savoir quels serveurs d'une instance de boulon en cours d'exécution? Merci beaucoup.

Répondre

0

Si vous souhaitez un jeton par occurrence de boulon, ajoutez une variable d'instance à votre classe de boulons pour conserver ce jeton et initialisez/nettoyez ce jeton aux moments appropriés du cycle de vie du boulon.

Si vous souhaitez avoir un jeton pour chaque machine, vous pouvez créer un bean Singleton pour contenir un jeton pour l'intégralité de la JVM. Notez que si vous souhaitez avoir plusieurs travailleurs sur une même machine, vous devez être satisfait de plusieurs jetons pour chaque machine (un par JVM sur l'ordinateur) ou créer un serveur de middleware autonome qui possède le jeton et qui traite les demandes provenant de plusieurs JVM sur la machine. Même si cela est acceptable, vous aurez toujours besoin de savoir comment faire en sorte que toutes les instances de boulon dans un seul JVM/worker partagent le même jeton pour cette JVM.