2012-02-03 3 views
3

Disons que j'ai un routeur qui est configuré pour créer des acteurs sur plusieurs nœuds distants. Peut-être que j'ai une configuration comme ceci:Détection de l'échec des nœuds distants d'un routeur akka

akka { 
     actor { 
      deployment { 
       /fooRouter { 
       router = round-robin 
       resizer { 
        lower-bound = 2 
        upper-bound = 10 
       } 
       target { 
        nodes = ["akka://[email protected]:2555", "akka://[email protected]:2555"] 
       } 
      } 
     } 
    } 

Si nous prétendons que l'un de ces nœuds, 10.0.1.1, pour une raison quelconque, a perdu la connectivité au serveur de base de données, de sorte que tous les messages qui lui sont transmis aboutit à l'échec . Y at-il un moyen que le routeur pourrait savoir que le nœud 10.0.1.1 est effectivement inutile et cesser de l'utiliser?

+1

Avez-vous essayé d'arrêter l'enfant sur l'autre noeud lorsque la base de données tombe en panne? –

Répondre

2

Non, actuellement il n'y en a pas. Vous pouvez faire en sorte que les acteurs du nœud défaillant se suicident, mais dès que le resizer en démarre de nouveaux, ils réapparaissent. Même avec la prise en charge de la mise en cluster (qui est à venir), cela ne sera pas automatique, car les connexions à une ressource externe ne font pas partie de la métrique d'accessibilité du cluster. Cela signifie que vous devrez écrire du code qui descend explicitement ce nœud, sur lequel les acteurs pourraient être migrés vers un autre nœud (les détails ne sont pas encore entièrement détaillés). Donc, à l'heure actuelle, vous devez écrire votre propre routeur en tant qu'acteur réel, ce qui tient compte de l'accessibilité.

Questions connexes