# ALGOREP: How to build a Failure Detectors *On a un ensemble de machine. Comment monitorer pour savoir qu'une est morte ?* > Si quelqu'un dans la salle a une machine qui meurt, on va le savoir *Supposons qu'on a un admin 6, pourquoi c'est pas une bonne solution ?* > Ca se scale pas bien > On centralise dans un seul data center pour un systeme distribue *Comment on pourrait faire pour detecter les machines qui meurent de maniere auto ?* *Si on a une mamie agee, coment on sait ?* > On la rappelle le matin, le midi, a 14h *Et si la mamie est tres lente a repondre au telephone ?* > On appelle une premiere fois, une seconde fois, etc. > Au bout de certaines sonneries on la suppose morte :::success On se forge une conviction de si la machine est vivante ou morte :::warning On est pas sur a $100\%$ ::: ::: # Desirable properties - Completness - Accuracy - Speed - Scale - Equal load on each member - Network Message Load ## What real failure detectors prefer ? - Success and accuracy - Scale & Speed # Strategies ## Centralized heartbeating On a une machine centrale qui envoie des messages a tout le monde, sauf que la machine ne fait que ca et doit faire d'autre decisions - On peut avoir une machine avec superposition de couches - Un chef pour les fautes, un chef pour les decisions, etc. :::success On empile les couches jusqu'a contrer le theoreme d'impossibilite ::: ## Ring Heartbeating On va regarder nos voisins a gauche et a droite, pour propager le message qu'une machine est morte on doit faire le tour de l'anneau. *Si notre voisin de droite est mort, comment on fait ?* > On veut se connecter a son voisin de droite > Et si son voisin de droite est mort aussi ? > Soit on est coupe du reseau, soit systeme de cascade de mort de machines ## All-to-all heartbeating - A processus heartbeats periodically all its neighbours - If heartbeat not received from a process within timeout, mark this process as failed ## Gossiping heartbeating On envoie un heartbeat a quelqu'un, cette personne dit telle ou telle personne est vivante - On prend un pool de personnes random a qui envoyer notre heartbeat ## Conclusion :::danger Heartbeat is a fundamental of Failure detection :::