J'ai une question abstraite.Service singleton distribué pour le basculement
J'ai besoin d'un service avec tolérance aux pannes. Le service ne peut être exécuté que sur un nœud à la fois. C'est la clé.
Avec deux noeuds connectés: A et B.
- Si A est en cours d'exécution du service, B doit attendre.
- Si A est désactivé, B doit le détecter et démarrer le service.
- Si A est réactivé, A doit attendre et ne pas exécuter le service.
- etc. (Si B est désactivé, A commence, si A est désactivé B commence)
Je pense sur le protocole battement de coeur pour la synchronisation l'état des noeuds et détecter les délais d'attente, mais il y a beaucoup de conditions de course.
Je peux ajouter un troisième noeud avec un verrou global, mais je ne suis pas sûr de la façon de le faire.
Quelqu'un sait-il un algorithme bien connu pour le faire? Ou mieux Y at-il un logiciel open source qui me permet de contrôler ce genre de choses?
Merci
Quelles sont les ressources exclusives? Est-ce une entrée ou une sortie qui doit être exclusive? Pourquoi ne pas courir parallèlement de manière redondante? – stefan
Il existe des dizaines d'exemples de ressources exclusives: un service externe qui ne prend en charge qu'une seule connexion par client, un service de tickets, un service qui gère une partie de l'IoT (matériel) ... – Garet