Le document que vous mentionnez est important pour 2 raisons:
- Il montre qu'il n'y a pas d' algorithme de consensus déterministe asynchrone qui tolère même une seule panne de crash. Notez que dans le réglage synchrone , il existe un algorithme déterministe qui se termine par tours lorsque ≤ f processus se bloquent.F+ 1≤ f
- Il introduit la bivalence et l' univalence des configurations (*), qui sont utilisées dans de nombreuses limites inférieures et preuves d'impossibilité plus tard.
Applications
Une application importante du problème du consensus est l'élection d'un coordinateur ou d'un leader dans un environnement tolérant aux pannes pour lancer une action mondiale. Un algorithme de consensus vous permet de le faire à la volée, sans fixer à l'avance un "supernode" (ce qui introduirait un seul point de défaillance).
Une autre application maintient la cohérence dans un réseau distribué: supposons que différents nœuds de capteurs surveillent le même environnement. Dans le cas où certains de ces nœuds de capteurs tombent en panne (ou même commencent à envoyer des données corrompues en raison d'une défaillance matérielle), un protocole de consensus garantit la robustesse contre de telles défaillances.
C1C10CCC
Il montre qu'il n'y a pas d'algorithme déterministe tolérant aux pannes. Un résultat théorique assez fort, qui oblige les concepteurs à gérer différemment la tolérance aux pannes, dont la synchronisation et la randomisation.
Commentaire: À mon avis, la synchronisation est une hypothèse supplémentaire du système que l'on ne trouve guère dans les applications pratiques.
Pour les références, consultez le lien Wikipedia . Consultez également ce blog pour des applications pratiques
la source
L'une des raisons pour lesquelles les problèmes de consensus sont importants est qu'ils sont très simples et qu'ils sont en quelque sorte des problèmes universels pour les systèmes informatiques distribués.
Si nous pouvons résoudre le consensus dans un système distribué asynchrone, nous pouvons l'utiliser pour linéariser les actions sur les objets partagés et obtenir la linéarisation des objets partagés.
Par souci de simplicité, combien de problèmes pouvez-vous penser qui sont plus simples que de s'entendre sur une valeur?
Le résultat de l'impossibilité d'un consensus dans les systèmes distribués asynchrones (purs) nous dit que nous ne pouvons pas résoudre les problèmes que nous voulons résoudre dans les systèmes distribués asynchrones (purs) sans quelques "trucs" supplémentaires. Cela conduit à des modèles asynchrones où nous pouvons résoudre un consensus, par exemple des algorithmes randomisés, des détecteurs de défauts, des modèles de synchronie partielle, etc.
C'est aussi la raison pour laquelle, dans la pratique, les algorithmes qui résolvent le consensus comme Paxos de Lamport, Chubby de Google, Apache ZooKeeper et plus récemment Raft sont au cœur des systèmes distribués où nous voulons souvent reproduire un état parmi les serveurs.
la source
J'ajouterais seulement que la nature du calcul est de plus en plus répartie sur la pile: de nombreux processeurs, de nombreux processus sur une machine, de nombreuses machines connectées par des réseaux locaux, de nombreux réseaux locaux connectés par des internets.
Cela rend le problème de l'état commun (distribué / global) primordial - chaque algorithme suppose un certain état et si le calcul doit être effectué à plusieurs endroits, alors l'état doit également être distribué.
Des articles influents ( Paxos et plus récemment Raft ) dans ce domaine ont été publiés après l'article que vous citez. Tous deux abordent les questions de consensus en présence de certains échecs.
Les erreurs byzantines peuvent être évitées dans les systèmes distribués en utilisant peu d'approches.
Jetez un oeil à l'entrée Wikipedia sur la tolérance aux pannes byzantine .
la source