Implémenter un verrou distribué
- Découverte de l’algorithme Redlock sur le site web de Redis, qui affirme implémenter un verrou distribué tolérant aux pannes au-dessus de Redis.
- Plusieurs implémentations indépendantes de Redlock existent déjà, et comme certaines personnes peuvent dépendre de cet algorithme, l’auteur a décidé de partager ses notes.
- Redis est utile pour partager entre serveurs des données temporaires et qui changent rapidement, mais son extension au domaine de la gestion de données exigeant une forte cohérence et de la durabilité suscite des inquiétudes.
Objectif des verrous
- Un verrou sert à garantir qu’un seul nœud parmi plusieurs exécute une tâche donnée.
- Si l’on utilise un verrou pour des raisons d’efficacité, il peut être préférable d’utiliser une seule instance Redis.
- Si l’on utilise un verrou pour des raisons de justesse, Redlock n’est pas adapté.
Protéger une ressource avec un verrou
- Dans un système distribué, un verrou est différent d’un mutex dans une application multithread.
- Il empêche qu’un autre client effectue la même opération pendant qu’un client lit un fichier, le modifie puis le réécrit.
Implémenter un verrou sûr grâce au fencing
- On peut implémenter un verrou sûr en utilisant des jetons de fencing inclus dans les requêtes d’écriture.
- Redlock n’est pas sûr, car il ne génère pas de jetons de fencing.
Utiliser le temps pour parvenir à un consensus
- Contrairement aux algorithmes conçus pour un modèle asynchrone, Redlock repose fortement sur des hypothèses liées au temps.
- Si l’horloge système fonctionne de manière anormale, l’expiration des clés peut se produire plus tôt ou plus tard que prévu.
Rompre les hypothèses temporelles de Redlock
- Redlock suppose un modèle de système synchrone et ne fonctionne correctement que si les délais réseau, les pauses de processus et les erreurs d’horloge restent limités.
- Des cas comme l’incident de délai de 90 secondes sur les paquets chez GitHub peuvent menacer la sûreté de Redlock.
Conclusion
- Redlock est inutilement lourd pour des verrous visant l’optimisation de l’efficacité, et pas suffisamment sûr dans les situations exigeant de la justesse.
- Si un verrou est nécessaire pour garantir la justesse, il est préférable d’utiliser un véritable système de consensus, comme ZooKeeper.
Résumé GN⁺
- L’algorithme Redlock apporte une discussion importante sur l’implémentation des verrous dans les systèmes distribués.
- Cet article met en avant les hypothèses temporelles et les problèmes de sûreté dans les systèmes distribués, et explique l’importance d’une implémentation correcte des verrous.
- Il recommande des systèmes alternatifs comme ZooKeeper et aide à mieux comprendre la complexité des systèmes distribués.
1 commentaires
Avis Hacker News
SET, ce qui a permis de résoudre le problème de correction