Dans tous les exemples de superviseur d'Erlang que j'ai pu voir, il y a habituellement un superviseur «maître» qui supervise l'arbre entier (ou du moins est le nœud racine dans l'arbre de supervision). Que faire si le superviseur "maître" casse? Comment le superviseur "maître" doit-il être supervisé? un motif typique?Erlang: Qui supervise le superviseur?
Répondre
Le superviseur supérieur est démarré dans le rappel start/2 de votre application à l'aide de start_link, ce qui signifie qu'il est lié au processus d'application. Si le processus d'application reçoit un signal de sortie du superviseur haut en train de mourir, il fait l'une des deux choses:
Si l'application est lancée comme une application permanente l'ensemble du nœud i terminé (et peut-être à l'aide redémarrée HEART). Si l'application est démarrée comme temporaire, l'application s'arrête de fonctionner, aucune tentative de redémarrage ne sera effectuée.
Typiquement Supervisor est réglé sur «seulement» pour superviser d'autres processus. Quels hommes il n'y a pas de code écrit par l'utilisateur qui est exécuté par Supervisor - donc il est très peu susceptible de planter.
Bien sûr, cela ne peut pas être appliqué ... Donc, le modèle typique est de et non de d'avoir une logique spécifique à l'application dans Supervisor ... Il ne devrait superviser que - et ne rien faire d'autre.
Bonne question. Je dois admettre que tous les exemples et les didacticiels ignorent la plupart du problème - même si parfois quelqu'un mentionne le problème (sans fournir un exemple de solution):
Si vous voulez la fiabilité, utilisez au moins deux ordinateurs, puis faites-les superviser les uns les autres. Comment réellement mettre en œuvre cela avec OTP est (avec l'état actuel de la documentation et des tutoriels), cependant, semble être quelque part entre bien caché et secret.
- 1. Superviseur Erlang avec un enfant critique
- 2. Erlang fraient un superviseur avec un paramètre
- 3. arbre superviseur Erlang mettre fin à
- 4. Problème avec le démarrage du superviseur par le script - Erlang
- 5. AKKA fait appel à un superviseur pour arrêter tous les acteurs qu'il supervise?
- 6. Superviseur Erlang: comment vérifier si tous les travailleurs ont répondu
- 7. Erlang - Démarrage d'un enfant à partir du module superviseur
- 8. Impossible de générer un superviseur erlang à partir du shell
- 9. Supervision d'un processus ordinaire dans le comportement du superviseur Erlang/OTP
- 10. Comment redémarrer un enfant avec un état personnalisé en utilisant le comportement du superviseur Erlang OTP?
- 11. automatiquement le redémarrage des applications Erlang
- 12. Mode Superviseur/Administrateur
- 13. Obtenir le PID de moi-même (superviseur)
- 14. MVP - Contrôleur Superviseur
- 15. superviseur empty logfile
- 16. Variables d'environnement avec superviseur
- 17. Comment trouver le superviseur d'un processus OTP?
- 18. Erreur de terminaison anormale exécutant le superviseur
- 19. script pour démarrer le code Erlang
- 20. Superviseur arrêtant les processus fils
- 21. erlang OTP Supervisor plantant
- 22. Comment surveiller un nœud erlang distant qui était en panne et qui redémarre
- 23. démarrer l'application erlang avec le paramètre
- 24. Erlang Code Snippet qui montre ses avantages?
- 25. Erlang OTP supervisor
- 26. Exécuter l'application node.js dans le débogage avec le superviseur
- 27. Comment obtenir les détails d'exception d'un superviseur Akka?
- 28. Comment exécuter une application Erlang dans le shell Erlang
- 29. relations récursives - personnes de la liste avec un superviseur et ceux sans superviseur
- 30. superviseur pour un exécutable sous linux
Mais Erlang est généralement utilisé pour le cloud computing .. Le superviseur peut se bloquer si, par exemple, le serveur contenant le superviseur "maître" tombe en panne (quelqu'un tire accidentellement la prise?). En outre, il y a généralement plus que le thread de votre application qui s'exécute sur le système d'exploitation. Cela ne signifie pas que tout le nuage devrait planter dans ce cas. – Daniel
@dkk Erlang n'est généralement pas utilisé pour le cloud computing. Le cloud computing est un terme chargé apparu ces dernières années alors qu'Erlang existe depuis plus de 20 ans. Erlang fonctionne généralement plutôt sur des grappes de serveurs de taille petite à moyenne –
@dkk: vous ne surveillez pas les autres nœuds avec des superviseurs, vous avez un superviseur principal par application sur chaque nœud. –